2017-03-08 163 views
0

我有一个日期时间列在SQL DB - 名为check_time。我想写一个select查询,其中这个check_time应该等于今天的日期(不需要考虑什么时间,只需要检查当前日期)。 例如表中的check_time插入为03/08/2017 12:00:00.000 AM。 我写下如下如何检查日期时间列值等于当前日期在SQL条款

SELECT * FROM time_details 
WHERE check_time = DATEADD(day, DATEDIFF(day,0,GETDATE()),0) 

但它什么也没有返回。

回答

0

这是正确的语法:

SELECT * FROM time_details where (DATEDIFF(d, check_time, GETDATE()) = 0) 
+0

在'='附近显示不正确的语法。 – user2431727

+0

立即尝试,查看我的更新 –

+0

其中返回空行。即使有一列值为03/08/2017 12:00:00.000 AM – user2431727

0

CAST今天的日期DATE

查询

select * from time_details 
where check_time = cast(getdate() as date); 
+0

显示错误 - 类型日期不是定义的系统类型。 – user2431727

+0

@ user2431727:check_time列的数据类型是什么? – shyamu

0

尝试用

SELECT * FROM time_details where DATE(check_time) =CURDATE() 

日期函数将同时CURDATE将返回当前日期从您只提取日期时间字段。

+0

显示错误 - “DATE”不是公认的内置函数名称。 – user2431727

+0

对不起,我误解了这个问题,你指的是SQL Server,我是关于MySQL的。只需使用GETDATE()而不是CURDATE,并且在上面校正的check_time字段 –

+0

附近没有任何功能。不返回行。 SELECT * FROM time_details其中check_time = GETDATE() – user2431727

0

检查与SQL查询

SELECT * FROM time_details其中date(CHECK_TIME)= DATE(NOW())

+0

SHOWS'date_format'不是公认的内置函数名称。 – user2431727

0

这应该工作

SELECT * FROM time_details其中CHECK_TIME =转换(VARCHAR ,getdate(),101)

相关问题