這是我的完整程式碼,但是當我啟動它時,
DECLARE @StartDateTime DATETIME DECLARE @EndDateTime DATETIME SET @StartDateTime = '2022-04-01' SET @EndDateTime = '2022-04-29'; WITH DateRange(Dates, DateWD) AS ( SELECT @StartDateTime as Date, DATEPART(WEEKDAY, @StartDateTime) UNION ALL SELECT DATEADD(d,1,Dates), DATEPART(WEEKDAY, DATEADD(d,1,Dates)) FROM DateRange WHERE Dates < @EndDateTime ) SELECT Dates, DateWD FROM DateRange WHERE DATEWD NOT IN(1,7) AND Dates NOT IN( SELECT (HOLI_YEAR + '-' + HOLI_MONTH + '-' + HOLI_DAY) AS DATE FROM TB_HOLIDAY_CODE OPTION (MAXRECURSION 0)
出現這個錯誤。
我想顯示 2022 年 4 月的日期清單(週日和週六除外)
例如)開始日期是 2022-04-01 結束日期為 2022 年 4 月 30 日
結果出來了->
日期 | 日期WD |
---|---|
2022-04-01 | (週五) |
2022-04-04 | (週一) |
2022-04-05 | (週二) |
2022-04-06 | (週三) |
2022-04-07 | (週四) |
2022-04-08 | (週五) |
2022-04-11 | (週一) |
.... | ... |
如何修復此程式碼?請幫幫我。謝謝
*** 我不會使用表格。因為我沒有表,並且我只想使用 SQL QUERY。
語法錯誤是因為該範例是為 SQL Server 編寫的,而不是為 MySQL 編寫的。它需要一些調整才能與 MySQL 8.x 一起使用:
您不需要
DECLARE
使用者定義的變數。只需使用SET
來宣告並指派變數值DATEADD()
是一個 SQL Server 函數。 MySQL 等效項是 DATE_ADD(日期,INTERVAL 表達式單位)#DATEPART(weekday,...)
是一個 SQL Server 函數。對於 MySQL,請嘗試 DAYOFWEEK(date)#最後,在 CTE 中使用關鍵字
RECURSIVE
。來自文檔: p>SQL