You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在SQL Server中筛选时间部分非00:00:00.000的DATETIME数据

过滤SQL Server中时间部分非午夜0点的DATETIME行

要筛选出StartDate列中时间部分不为00:00:00.000的行,以下是几种实用且可靠的实现方法:

方法1:通过日期类型转换对比

将DATETIME转换为DATE类型剥离时间部分,再转回DATETIME(默认时间为午夜0点),与原字段值对比:

SELECT ID, StartDate
FROM YourTableName
WHERE StartDate <> CAST(CAST(StartDate AS DATE) AS DATETIME);

方法2:计算时间差判断

利用DATEDIFF计算原时间与当日午夜的毫秒差,差值大于0则说明时间部分非零:

SELECT ID, StartDate
FROM YourTableName
WHERE DATEDIFF(ms, CAST(StartDate AS DATE), StartDate) > 0;

方法3:直接提取时间部分对比(SQL Server 2008+)

使用CONVERT提取时间部分,直接与午夜时间字符串比较:

SELECT ID, StartDate
FROM YourTableName
WHERE CONVERT(TIME, StartDate) <> '00:00:00.0000000';

示例结果

执行以上任意查询后,将返回符合要求的行:

IDStartDate
32025-06-13 00:03:30.000
42025-06-14 00:00:01.023

内容的提问来源于stack exchange,提问作者Stevoisiak

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.12 20:34:57