這是關于日期比較的。我無法計算出一個查詢,該查詢對于日期在今天之前的所有行都回傳 TRUE。
不過,如果今天的日期與包含這些日期的列中的行值匹配,我有一個查詢回傳 TRUE。
SELECT
CASE WHEN EXISTS
(
SELECT WFD_AttText5, WFD_AttText1
FROM WFElements
WHERE WFD_DTYPEID = 83
)
THEN 'TRUE'
ELSE 'FALSE'
END AS 'Match'
FROM WFElements
WHERE WFD_DTYPEID = 83 AND WFD_AttText5 IN
(
SELECT
FORMAT (
GETDATE(), 'dddd, dd.MM.yy', 'de-de')
FROM WFElements
)
對于與今天日期匹配的一個日期,這將回傳 TRUE。但是我如何為少于今天的所有行回傳 TRUE?我認為我的問題是我必須使用 IN() 并且不能同時使用 <。
編輯:此查詢效果更好,但在列印 TRUE 時并不總是正確:
SELECT
WFD_AttText5
AS 'Datum Formularfeld',
FORMAT
(
GETDATE
(), 'dddd, dd.MM.yy', 'de-de') AS 'TODAY formattiert',
'TRUE' AS [Match]
FROM WFElements
WHERE
WFD_DTYPEID = 83
AND WFD_AttText5 < FORMAT
(
GETDATE
(), 'dddd, dd.MM.yy', 'de-de')
這給出了正確的結果(德語),例如:
米特沃克,22 年 5 月 25 日 | 弗賴塔格,22 年 10 月 28 日 | 真實
含義:Mittoch,25.05.22 < Freitag,28.10.22,這是真的。
但也有錯誤的:
弗賴塔格,22 年 12 月 30 日 | 弗賴塔格,22 年 10 月 28 日 | TRUE
含義:應該是真的,Freitag, 30.12.22 小于 Freitag, 28.10.22 這不是真的。
我希望我快到了。
uj5u.com熱心網友回復:
對于 WFD_AttText5(假設這是格式為 dd.mm.yy 的 str 日期)小于當前日期的每一行,此查詢將回傳“TRUE”。對于其他人,它將回傳“FALSE”。
SELECT
WFD_AttText5,
CASE
WHEN CONVERT(DATE,WFD_AttText5,4) < CONVERT(DATE,GETDATE()) THEN 'TRUE' -- 4 stands for dd.mm.yy format
ELSE 'FALSE'
END AS [Match]
FROM WFElements
WHERE WFD_DTYPEID = 83
或者如果你只想要 'TRUE' 值,就這樣:
SELECT
WFD_AttText5,
'TRUE' AS [Match]
FROM WFElements
WHERE
WFD_DTYPEID = 83
AND CONVERT(DATE,WFD_AttText5,4) < CONVERT(DATE,GETDATE())
其他提示:EXISTS始終使用SELECT 1
您的第一個查詢可以重寫為
SELECT
'TRUE' AS [Match]
FROM WFElements
WHERE
WFD_DTYPEID = 83
AND CONVERT(DATE,WFD_AttText5,4) = CONVERT(DATE,GETDATE())
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/524914.html
