SQL Server从date时间中删除毫秒
select * from table where date > '2010-07-20 03:21:52' 
 我希望不会给我任何结果…除了我得到一个logging2010-07-20 03:21:52.577 
我怎样才能使查询忽略毫秒?
您只需要计算出date的毫秒部分,然后在比较之前将其减掉,如下所示:
 select * from table where DATEADD(ms, -DATEPART(ms, date), date) > '2010-07-20 03:21:52' 
 select * from table where DATEADD(ms, DATEDIFF(ms, '20000101', date), '20000101') > '2010-07-20 03:21:52' 
在比较之前,你必须要微调几毫秒,这将在很多行上变慢
做其中之一来解决这个问题:
- 用上面的expression式创build一个计算列来比较
 - 删除插入/更新毫秒以避免读取开销
 -  如果SQL Server 2008使用
datetime2(0) 
尝试:
 SELECT * FROM table WHERE datetime > CONVERT(DATETIME, CONVERT(VARCHAR(20), CONVERT(DATETIME, '2010-07-20 03:21:52'), 120)) 
或者如果你的date是一个实际的date时间值:
 DECLARE @date DATETIME SET @date = GETDATE() SELECT CONVERT(DATETIME, CONVERT(VARCHAR(20), @date, 120)) 
转换到样式120切断毫秒…
对于这个特定的查询,为什么要在每一行中进行昂贵的函数调用,而只需要从下一个较高的秒开始请求值:
 select * from table where date >= '2010-07-20 03:21:53' 
如果您正在使用SQL Server(从2008开始),请select下列其中一项:
- CONVERT(DATETIME2(0),YourDateField)
 - 左(RTRIM(CONVERT(DATETIMEOFFSET,YourDateField)),19)
 - CONVERT(DATETIMEOFFSET(0),YourDateField) – 添加时区偏移量
 
有多种方法可以做到这一点:
 select 1 where datediff(second, '2010-07-20 03:21:52', '2010-07-20 03:21:52.577') >= 0 
要么
 select * from table where datediff(second, '2010-07-20 03:21:52', date) >= 0 
less一个函数调用,但如果date太远,则必须小心溢出最大整数。
请试试这个
 select substring('12:20:19.8470000',1,(CHARINDEX('.','12:20:19.8470000',1)-1)) (No column name) 12:20:19 
当我使用存储过程从特定的秒钟(以“YYYY-MM-DD HH:TT:SS”格式的参数)查找事件时,另一种方法是设置SQL Server查询以忽略毫秒:
  WHERE ...[Time_stamp] >= CAST(CONCAT(@YYYYMMDDHHTTSS,'.000') as DateTime) AND ...[Time_stamp] <= CAST(CONCAT(@YYYYMMDDHHTTSS,'.999') as DateTime) 
你可以使用类似的东西来忽略分钟和秒钟。
可能是这会帮助.. SELECT [date时间] = CAST('20120228'AS smalldatetime)
o / p:2012-02-28 00:00:00
使用CAST和以下参数:
date
 select Cast('2017-10-11 14:38:50.440' as date) 
产出:2017-10-11
约会时间
 select Cast('2017-10-11 14:38:50.440' as datetime) 
输出:2017-10-11 14:38:50.440
SMALLDATETIME
 select Cast('2017-10-11 14:38:50.440' as smalldatetime) 
输出:2017-10-11 14:39:00
DATETIMEOFFSET
 select Cast('2017-10-11 14:38:50.440' as datetimeoffset) 
输出:2017-10-11 14:38:50.4400000 +00:00
DATETIME2
 select Cast('2017-10-11 14:38:50.440' as datetime2) 
输出:2017-10-11 14:38:50.4400000