【发布时间】:2022-01-03 14:03:48
【问题描述】:
我正在尝试实现一个 SQL 查询,该查询根据我表中的日期时间列获取今天固定时间 18:00 和昨天固定时间 18:00 之间的记录。
我试过这个查询
DECLARE @today date = GETDATE()
SELECT *
FROM mytab
WHERE datetimecolumn Between @today-1 + TimeSerial(18,0,0)
And @today + TimeSerial(18,0,0)
但是,它抛出了一个错误Timeserial is not a recognized built-in function name.
有什么想法吗?
【问题讨论】:
-
那是因为它不是 SQL Server 中的函数。好像是个MSAccess函数?
-
fine manual 记录了日期和时间类型的可用函数。
-
如果总是整小时(-6 或 +18),可能只是最容易使用
dateadd(hour, ...)。分钟也很容易。不过,您自己应该很容易理解该消息。 -
顺便说一句,你不应该这样做
datetimecolumn Between '2022-01-02 18:00:00' AND '2022-01-03 18:00:00'- 你应该使用datetimecolumn >= '2022-01-02 18:00:00' AND datetimecolumn < '2022-01-03 18:00:00' -
@MartinSmith 为什么
<和>比between好?
标签: sql sql-server datetime