select *
from table
where date > '2010-07-20 03:21:52'
Run Code Online (Sandbox Code Playgroud)
我希望不会给我任何结果...除了我得到一个日期时间为的记录 2010-07-20 03:21:52.577
如何使查询忽略毫秒?
Gab*_*abe 82
您只需要弄清楚日期的毫秒部分并在比较之前将其减去,如下所示:
select *
from table
where DATEADD(ms, -DATEPART(ms, date), date) > '2010-07-20 03:21:52'
Run Code Online (Sandbox Code Playgroud)
gbn*_*gbn 16
select * from table
where DATEADD(ms, DATEDIFF(ms, '20000101', date), '20000101') > '2010-07-20 03:21:52'
Run Code Online (Sandbox Code Playgroud)
你必须在比较之前修剪毫秒,这将在许多行上缓慢
做其中一个来解决这个问题:
datetime2(0)8kb*_*8kb 14
尝试:
SELECT *
FROM table
WHERE datetime >
CONVERT(DATETIME,
CONVERT(VARCHAR(20),
CONVERT(DATETIME, '2010-07-20 03:21:52'), 120))
Run Code Online (Sandbox Code Playgroud)
或者,如果您的日期是实际的日期时间值:
DECLARE @date DATETIME
SET @date = GETDATE()
SELECT CONVERT(DATETIME, CONVERT(VARCHAR(20), @date, 120))
Run Code Online (Sandbox Code Playgroud)
转换为样式120会缩短毫秒数......
MMJ*_*MMJ 10
如果您使用的是SQL Server(从2008开始),请选择以下选项之一:
对于这个特定的查询,当你可以从下一个更高的秒开始询问值时,为什么要为每一行进行昂贵的函数调用:
select *
from table
where date >= '2010-07-20 03:21:53'
Run Code Online (Sandbox Code Playgroud)
使用具有以下参数的CAST:
日期
select Cast('2017-10-11 14:38:50.440' as date)
Run Code Online (Sandbox Code Playgroud)
产出:2017-10-11
约会时间
select Cast('2017-10-11 14:38:50.440' as datetime)
Run Code Online (Sandbox Code Playgroud)
输出:2017-10-11 14:38:50.440
小约会时间
select Cast('2017-10-11 14:38:50.440' as smalldatetime)
Run Code Online (Sandbox Code Playgroud)
输出:2017-10-11 14:39:00
日期时间偏移
select Cast('2017-10-11 14:38:50.440' as datetimeoffset)
Run Code Online (Sandbox Code Playgroud)
输出:2017-10-11 14:38:50.4400000 +00:00
日期时间2
select Cast('2017-10-11 14:38:50.440' as datetime2)
Run Code Online (Sandbox Code Playgroud)
输出:2017-10-11 14:38:50.4400000
使用“小日期时间”数据类型
select convert(smalldatetime, getdate())
Run Code Online (Sandbox Code Playgroud)
将获取
2015-01-08 15:27:00
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
131298 次 |
| 最近记录: |