我想使用 ISO 周數獲得年數 - 周數(fi 2021-01)。我確實設法使用以下代碼將它們分開:
等周:
(datepart(ISOWK, [Date]))
等年編號:
YEAR(DATEADD(day, 26 - DATEPART(isoww, [Date]), [Date]))
但是,當我嘗試使用下面的行將它們組合成 YYYY-WW 格式時,我會得到奇怪的值,例如 2073 表示 2020 WK 53。
(YEAR(DATEADD(day, 26 - DATEPART(isoww, [Date]), [Date]))) '-' (datepart(ISOWK, [Date]))
我應該在上面的行中更改什么才能以 YYYY-WW 格式獲取 ISO 年和周?我在這里先向您的幫助表示感謝!
uj5u.com熱心網友回復:
使用該CONCAT功能。 是兩者的加法運算子和連接運算子在T-SQL; 它的推斷取決于它周圍的資料。在這里,它被推斷為加號運算子,而不是連接運算子,因為查詢中的資料是int值,'-'因此the被隱式轉換為 an inttoo('-'as an intis 0)。
如果我們使用當前日期,我們有以下運算式:
(YEAR(DATEADD(day, 26 - DATEPART(isoww, '20211028'), '20211028'))) '-' (datepart(ISOWK, '20211028'))
回傳2064. 那是因為它決議為2021 '-' 43 = 2021 0 43 = 2064.
如果你使用CONCAT你會得到你想要的,它首先將每個值隱式轉換為基于字串的資料型別:
SELECT CONCAT((YEAR(DATEADD(day, 26 - DATEPART(ISOWEEK, '20211028'), '20211028'))), '-', (DATEPART(ISOWEEK, '20211028')));
我還使您的大小寫保持一致,并對日期部分使用相同的關鍵字ISOWEEK,因為您不一致地使用isoww和ISOWK。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/340086.html
標籤:sql-server 日期 查询语句 日历
