Voici mon code complet, mais quand je le lance,
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)
Cette erreur se produit.
Je souhaite afficher une liste de dates pour avril 2022 (sauf dimanche et samedi)
Par exemple), la date de début est le 01/04/2022 Date de fin 30 avril 2022
Les résultats sont sortis->
Date | Date WD |
---|---|
2022-04-01 | (vendredi) |
2022-04-04 | (lundi) |
2022-04-05 | (mardi) |
2022-04-06 | (mercredi) |
2022-04-07 | (jeudi) |
2022-04-08 | (vendredi) |
2022-04-11 | (lundi) |
.... | ... |
Comment corriger ce code ? S'il vous plaît aidez-moi. Merci
*** Je ne sais pas utiliser les tableaux. Parce que je n'ai pas de table et que je veux juste utiliser SQL QUERY.
L'erreur de syntaxe est due au fait que l'exemple a été écrit pour SQL Server, pas pour MySQL. Cela nécessite quelques ajustements pour fonctionner avec MySQL 8.x :
Vous n'avez pas besoin
DECLARE
用户定义的变量。只需使用SET
de déclarer et d'attribuer des valeurs de variablesDATEADD()
est une fonction SQL Server. L'équivalent MySQL est DATE_ADD(Date,INTERVAL expression unit)DATEPART(weekday,...)
est une fonction SQL Server. Pour MySQL, essayez DAYOFWEEK(date)Enfin, utilisez des mots-clés
RECURSIVE
dans CTE. Extrait de Documents : p>SQL