我正在嘗試從 case 陳述句中的 T-SQL 中的日期格式列中減去一列整數,但是出現轉換錯誤。我了解錯誤的原因,但不知道如何解決。
CASE
WHEN EVT = 'x'
THEN DATEADD(DAY, -[DATE COLUMN], [INTEGER COLUMN])
ELSE [DATE COLUMN 2] - [INTEGER COLUMN]
END AS y
嘗試過帶和不帶方括號。
請問有什么建議嗎?
uj5u.com熱心網友回復:
如果您查閱 [official MS Documentation on DATEADD,您將看到正確的語法:
DATEADD (datepart, number, date)
所以我猜你的情況應該是:
CASE
WHEN EVT = 'x'
THEN DATEADD(DAY, -1 * [INTEGER COLUMN], [DATE COLUMN])
ELSE DATEADD(DAY, -1 * [INTEGER COLUMN], [DATE COLUMN 2])
END AS y
假設您想從兩個日期列中的任何一個中減去整數列的值作為天數。
uj5u.com熱心網友回復:
如果兩列都是日期時間列 - 并且您想減去天數:
iif(EVT = 'x', [DATE COLUMN], [DATE COLUMN2]) - [INTEGER COLUMN]
作為 CASE 運算式(IIF 將被轉換為):
CASE WHEN EVT = 'x' THEN [DATE COLUMN] ELSE [DATE COLUMN2] END - [INTEGER COLUMN]
如果您的日期列是 date、datetime2、datetimeoffset 資料型別 - 那么您必須使用 DATEADD:
DATEADD(day, -[INTEGER COLUMN], IIF(EVT = 'x', [DATE COLUMN], [DATE COLUMN2]))
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/368545.html
標籤:sql-server 查询语句
