首页 > 解决方案 > 返回当前时间和日期 SQL

问题描述

我的 SQL 表如下所示:

IN_Time     Day         Name
21:00       Monday      Adam781;
22:15       Tuesday     Adam952;
23:45       Friday      Adam253;
...

Day如果 {current day && current time} 匹配和In_time列,我希望查询返回名称。

例如,如果今天是星期二,时间是 22:15(与日期无关),则查询应返回Adam952

以下是我尝试过的,但也不知道如何Day添加

SELECT Name FROM test_table
WHERE In_Time IN (SELECT CONVERT(VARCHAR(5), GETDATE(), 108)+':00');

另外,请让我知道是否有更好的方法来选择当前时间(以 hh:mm 为单位)。

标签: sqlsql-servertime

解决方案


您可以使用:

SELECT Name
FROM test_table
WHERE DAY = DATENAME(weekday, GETDATE()) AND
      INTIME = CONVERT(TIME, GETDATE())

请注意,这回答了您的问题,但时间需要完全匹配。如果您只想匹配小时和分钟:

SELECT Name
FROM test_table
WHERE DAY = DATENAME(weekday, GETDATE()) AND
      DATEPART(HOUR, INTIME) = DATEPART(HOUR, GETDATE()) AND
      DATEPART(MINUTE, INTIME) = DATEPART(MINUTE, GETDATE())

推荐阅读