Sql 如何筛选DateTime列的时间部分
我想根据特定的时间从表中检索数据,所以我使用下面的查询Sql 如何筛选DateTime列的时间部分,sql,sql-server,sql-server-2008-r2,Sql,Sql Server,Sql Server 2008 R2,我想根据特定的时间从表中检索数据,所以我使用下面的查询 select * from a where convert(smalldatetime,date,datepart(hh,date)) ='09:12:00' 但结果我没有吵架。那么,我应该怎么做才能得到预期的结果呢?试试这个: SELECT * FROM a WHERE CONVERT(VARCHAR(8), [DATE],108) = '09:12:00' 您的数据类型已经是smalldatetime,因此必须转换为
select * from a
where convert(smalldatetime,date,datepart(hh,date)) ='09:12:00'
但结果我没有吵架。那么,我应该怎么做才能得到预期的结果呢?试试这个:
SELECT *
FROM a
WHERE CONVERT(VARCHAR(8), [DATE],108) = '09:12:00'
您的数据类型已经是smalldatetime
,因此必须转换为varchar
,并与字符串进行比较
编辑:
答复说明:
[DATE]列中有smalldatetime
。例如2015-10-01 09:12:00
。要仅比较时间,您需要转换为仅包含时间的字符串。因此,您将使用来自TSQL的命令
它将smalldatetime
转换为8个字符的字符串。因此,您将获得09:12:00
,然后将其与字符串进行比较。尝试以下操作:
SELECT *
FROM a
WHERE CONVERT(VARCHAR(8), [DATE],108) = '09:12:00'
您的数据类型已经是smalldatetime
,因此必须转换为varchar
,并与字符串进行比较
编辑:
答复说明:
[DATE]列中有smalldatetime
。例如2015-10-01 09:12:00
。要仅比较时间,您需要转换为仅包含时间的字符串。因此,您将使用来自TSQL的命令
它将
smalldatetime
转换为8个字符的字符串。因此,您将获得09:12:00
,然后将其与字符串进行比较。您可以直接转换为varchar,如下所示
SELECT * FROM a
WHERE CONVERT(VARCHAR(8), [date], 108) = '09:12:00'
您可以直接转换为varchar,如下所示
SELECT * FROM a
WHERE CONVERT(VARCHAR(8), [date], 108) = '09:12:00'
//转换(数据类型(长度)、表达式、样式)
//转换(数据类型(长度)、表达式、样式)
在SQLServer2008中,可以转换为时间。通过指定时间(0),可以获得所需的格式:
SELECT *
FROM a
WHERE CAST(date as time(0)) ='09:12:00'
在SQLServer2008中,可以转换为时间。通过指定时间(0),可以获得所需的格式:
SELECT *
FROM a
WHERE CAST(date as time(0)) ='09:12:00'
a
表中的date
列是什么类型?smalldatetime@TimTry从a中选择convert(smalldatetime,date,datepart(hh,date)),然后查看转换结果!您确定有时间为“09:12:00”的行吗?@jarlh它给出的日期也与2015-12-09 09:12:00类似a
表中的date
列是什么类型的?smalldatetime@TimTry从a中选择convert(smalldatetime,date,datepart(hh,date)),并查看转换结果!您确定有时间为“09:12:00”的行吗?@jarlh它给出的日期也像2015-12-09 09:12:00108是直接转换类型10x,@Helio。我不知道该选项是什么。@Bogdanov请解释你的答案,为什么你转换成108,为什么我的查询不工作,但你的工作正常?108是直接转换类型10x,@Helio。我不知道该选项。@BogdanBogdanov请解释您的答案,为什么您将其转换为108,为什么我的查询不工作,但您的工作正常?@BogdanBogdanov其总大小为8:)正确-我的错误:)您能解释一下为什么您将其转换为108格式,并解释一下为什么我的查询不显示任何结果和根据您的查询吗我得到了我的预期结果?@davidsam参考这篇文章:备注>日期和时间样式>@bogdanov它的总大小是8:)正确-我的错误:)你能解释一下为什么你把它转换成108格式,并解释一下为什么我的查询没有显示任何结果,根据你的查询我得到了我的预期结果吗?@davidsam参考这篇文章:备注>日期和时间样式>错误:Msg 1001,级别15,状态1,第4行第4行:长度或精度规范0无效。这表明您运行的兼容模式与2008不同。测试链接错误:Msg 1001,级别15,状态1,第4行第4行:长度或精度规范0无效。这表明您运行的兼容模式与2008不同。测试链路