Das ist mein vollständiger Code, aber wenn ich ihn starte,
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)
Dieser Fehler tritt auf.
Ich möchte eine Liste mit Terminen für April 2022 anzeigen (außer sonntags und samstags)
Zum Beispiel ist das Startdatum der 01.04.2022 Enddatum 30. April 2022
Die Ergebnisse liegen vor->
Datum | Datum WD |
---|---|
01.04.2022 | (Freitag) |
04.04.2022 | (Montag) |
05.04.2022 | (Dienstag) |
06.04.2022 | (Mittwoch) |
07.04.2022 | (Donnerstag) |
08.04.2022 | (Freitag) |
11.04.2022 | (Montag) |
.... | ... |
Wie kann dieser Code behoben werden? Bitte hilf mir. Danke
*** Ich weiß nicht, wie man Formulare verwendet. Weil ich keine Tabelle habe und nur SQL QUERY verwenden möchte.
语法错误是因为该示例是为 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