Ini adalah kod lengkap saya, tetapi apabila saya melancarkannya,
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)
Ralat ini berlaku.
Saya ingin menunjukkan senarai tarikh untuk April 2022 (kecuali Ahad dan Sabtu)
Sebagai contoh) tarikh mula ialah 2022-04-01 Tarikh tamat 30 April 2022
Hasilnya keluar->
Tarikh | Tarikh WD |
---|---|
2022-04-01 | (Jumaat) |
2022-04-04 | (Isnin) |
2022-04-05 | (Selasa) |
2022-04-06 | (Rabu) |
2022-04-07 | (Khamis) |
2022-04-08 | (Jumaat) |
2022-04-11 | (Isnin) |
.... | ... |
Bagaimana untuk membetulkan kod ini? tolong saya. Terima kasih
*** Saya tidak tahu cara menggunakan borang. Kerana saya tidak mempunyai jadual dan saya hanya mahu menggunakan SQL QUERY.
Ralat sintaks adalah kerana contoh ditulis untuk SQL Server, bukan MySQL. Ia memerlukan sedikit pengubahsuaian untuk berfungsi dengan MySQL 8.x:
Anda tidak perlu
DECLARE
用户定义的变量。只需使用SET
untuk mengisytiharkan dan menetapkan nilai berubahDATEADD()
ialah fungsi SQL Server. Setara dengan MySQL ialah DATE_ADD(Tarikh, unit ekspresi INTERVAL)DATEPART(weekday,...)
ialah fungsi SQL Server. Untuk MySQL, cuba DAYOFWEEK(tarikh)Akhir sekali, gunakan kata kunci
RECURSIVE
dalam CTE. Daripada Dokumen: p>SQL