如何仅从 DateTime 数据类型比较小时和分钟
How to compare Hour and Minute only from DateTime data type
我的字段 endTime 具有 DateTime 数据类型和状态 (int)。如果 endTime 的小时和分钟等于当前时间的小时和分钟,我想将我的状态字段从 1 更新为 0。这一天完全一样。所以哪一天都无所谓。
我该怎么做?
您可以使用 datepart()
:
select (case when datepart(hour, EndTime) = datepart(hour, getdate()) and
datepart(minute, EndTime) = datepart(minute, getdate())
then 1 else 0
end) as status
您也可以将其放入更新中,如果那是您真正想要的。
编辑:
更新为:
update table
set status = (case when datepart(hour, EndTime) = datepart(hour, getdate()) and
datepart(minute, EndTime) = datepart(minute, getdate())
then 1 else 0
end);
试试这个:
UPDATE <TABLE>
SET STATUS = 1
WHERE MINUTE(GETDATE()) = MINUTE(ENDTIME)
AND HOUR(GETDATE()) = HOUR(ENDTIME)
UPDATE <table> SET status = 0
WHERE datepart(hour, endTime) = datepart(hour,getdate())
AND datepart(minute, endTime) = datepart(minute,getdate());
这就是我在 SQL-Server 2008 上的做法。
我的字段 endTime 具有 DateTime 数据类型和状态 (int)。如果 endTime 的小时和分钟等于当前时间的小时和分钟,我想将我的状态字段从 1 更新为 0。这一天完全一样。所以哪一天都无所谓。
我该怎么做?
您可以使用 datepart()
:
select (case when datepart(hour, EndTime) = datepart(hour, getdate()) and
datepart(minute, EndTime) = datepart(minute, getdate())
then 1 else 0
end) as status
您也可以将其放入更新中,如果那是您真正想要的。
编辑: 更新为:
update table
set status = (case when datepart(hour, EndTime) = datepart(hour, getdate()) and
datepart(minute, EndTime) = datepart(minute, getdate())
then 1 else 0
end);
试试这个:
UPDATE <TABLE>
SET STATUS = 1
WHERE MINUTE(GETDATE()) = MINUTE(ENDTIME)
AND HOUR(GETDATE()) = HOUR(ENDTIME)
UPDATE <table> SET status = 0
WHERE datepart(hour, endTime) = datepart(hour,getdate())
AND datepart(minute, endTime) = datepart(minute,getdate());
这就是我在 SQL-Server 2008 上的做法。