[英]how should i validate if one datetime field is greater then second datetime in sql server 2008 using IF else statement?
[英]IF ELSE statement for datetime SQL Server
我正在嘗試以秒為單位計算日期時間差。 我的代碼做什么->如果A.KIOSKLASTUPDATED
NULL,請獲取當前時間。 然后計算時間差。 此部分正確完成。
現在,我想添加if else語句,以秒為單位的日期時間差異。 如果差異小於等於300,則執行其他操作
我收到錯誤消息:
關鍵字“ IF”附近的語法不正確。
我的代碼:
SELECT
(SELECT TOP 1 CONCAT(B.OPERATORID, ' ', B.OPERATORNAME)
FROM ACTIVITY_LOG AS B
WHERE B.KIOSKID = A.KIOSKID
ORDER BY B.CREATED_AT DESC) AS CURRENTUSER,
IF(DATEDIFF(ss, ISNULL(CONVERT(VARCHAR(19), A.KIOSKLASTUPDATED, 20), CONVERT(VARCHAR(19), GETDATE(), 20)), CONVERT(VARCHAR(19), GETDATE(), 20)) <= 300)
BEGIN
SELECT '1' AS KIOSKSTATUS
END
ELSE
BEGIN
SELECT '0' AS KIOSKSTATUS
END
FROM
KIOSK_SETUP AS A
LEFT JOIN
DEPARTMENT AS C ON A.DEPARTMENTID = C.ID
您需要一個case
表達式:
SELECT (SELECT TOP 1 CONCAT(B.OPERATORID,' ',B.OPERATORNAME) FROM ACTIVITY_LOG AS B WHERE B.KIOSKID = A.KIOSKID ORDER BY B.CREATED_AT DESC
) AS CURRENTUSER,
(CASE WHEN datediff(ss, ISNULL(CONVERT(VARCHAR(19), A.KIOSKLASTUPDATED, 20), CONVERT(VARCHAR(19), getdate(), 20)), CONVERT(VARCHAR(19), getdate(), 20)) <=300
THEN '1' ELSE '0'
END) AS KIOSKSTATUS
FROM KIOSK_SETUP A LEFT JOIN
DEPARTMENT C
ON A.DEPARTMENTID = C.ID;
也就是說,查詢中還有許多其他問題:
A
和C
沒有意義。 IF()
適用於T-SQL代碼,不適用於查詢。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.