Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 如何筛选DateTime列的时间部分_Sql_Sql Server_Sql Server 2008 R2 - Fatal编程技术网

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不同。测试链路