如何计算 Sql 服务器中的日期时间
How to calculate datetime in Sql Server
我有一个非常特殊的 select 声明需要帮助。
CREATE PROCEDURE [dbo].[sp_GetLeaderEvents]
@ILCode nvarchar(20)
AS
BEGIN
SELECT EventID,EventName,EventDate,EventTime,EventSeatCount,EventILCode
FROM tblEvent
WHERE EventILCode = @ILCode AND (CAST(EventDate + EventTime AS TheEventDateTime) AS datetime) >= CAST(GETDATE() AS datetime)
END
问题是,在 WHERE 子句中的 AND 之后,sql 语法不正确,但我以能够清楚地表明我正在尝试做什么的格式编写它。我已将 EventDate 和 EventTime 分成 EventTable 中的两个不同列。我正在尝试过滤掉早于系统当前日期和时间的事件。如果我尝试像这样分别比较 EventTime 和 EventDate:
WHERE EventILCode = @ILCode AND CAST(EventTime AS time) >= CAST(GETDATE() AS time) AND CAST(EventDate AS date) >= CAST(GETDATE() AS date)
然后如果在 11:00AM 发生了一个事件,时间是 20/08/2020,也就是写这个 post 之前的 16 天,并且第二个 where 子句在 20 号之前的任何一天被执行早于当前 TIME 的事件将被隐藏,这是不正确的,因为该事件只会在 20 日发生...
如果也有办法使这成为可能,请有人帮助我或指导我正确的方向。如有任何帮助,我们将不胜感激。
请尝试以下。
SELECT EventID,EventName,EventDate,EventTime,EventSeatCount,EventILCode
FROM tblEvent
WHERE EventILCode = @ILCode AND
(CAST(EventDate AS datetime) + CAST(EventTime AS datetime)) >= CAST(GETDATE() AS datetime)
或
SELECT EventID,EventName,EventDate,EventTime,EventSeatCount,EventILCode
FROM tblEvent
WHERE EventILCode = @ILCode AND
(DATEDIFF(dd, 0,CAST(EventDate AS datetime) ) + CAST(EventTime AS datetime)) >= CAST(GETDATE() AS datetime)
我有一个非常特殊的 select 声明需要帮助。
CREATE PROCEDURE [dbo].[sp_GetLeaderEvents]
@ILCode nvarchar(20)
AS
BEGIN
SELECT EventID,EventName,EventDate,EventTime,EventSeatCount,EventILCode
FROM tblEvent
WHERE EventILCode = @ILCode AND (CAST(EventDate + EventTime AS TheEventDateTime) AS datetime) >= CAST(GETDATE() AS datetime)
END
问题是,在 WHERE 子句中的 AND 之后,sql 语法不正确,但我以能够清楚地表明我正在尝试做什么的格式编写它。我已将 EventDate 和 EventTime 分成 EventTable 中的两个不同列。我正在尝试过滤掉早于系统当前日期和时间的事件。如果我尝试像这样分别比较 EventTime 和 EventDate:
WHERE EventILCode = @ILCode AND CAST(EventTime AS time) >= CAST(GETDATE() AS time) AND CAST(EventDate AS date) >= CAST(GETDATE() AS date)
然后如果在 11:00AM 发生了一个事件,时间是 20/08/2020,也就是写这个 post 之前的 16 天,并且第二个 where 子句在 20 号之前的任何一天被执行早于当前 TIME 的事件将被隐藏,这是不正确的,因为该事件只会在 20 日发生...
如果也有办法使这成为可能,请有人帮助我或指导我正确的方向。如有任何帮助,我们将不胜感激。
请尝试以下。
SELECT EventID,EventName,EventDate,EventTime,EventSeatCount,EventILCode
FROM tblEvent
WHERE EventILCode = @ILCode AND
(CAST(EventDate AS datetime) + CAST(EventTime AS datetime)) >= CAST(GETDATE() AS datetime)
或
SELECT EventID,EventName,EventDate,EventTime,EventSeatCount,EventILCode
FROM tblEvent
WHERE EventILCode = @ILCode AND
(DATEDIFF(dd, 0,CAST(EventDate AS datetime) ) + CAST(EventTime AS datetime)) >= CAST(GETDATE() AS datetime)