Je souhaite trouver tous les enregistrements de la journée en cours. J'ai un champ Date de type DATE. Je reçois une erreur sur le serveur SQL
'DATE' is not a recognized built-in function name.
sur cette ligne
(DATE(EnterDate) = CURDATE() )
Lorsque l'erreur indique, il n'y a pas de DATE
function dans SQL Server 2008 ou 2012 (vous avez marqué les deux, donc je ne suis pas sûr du ciblage). Cependant, vous pouvez transtyper un type date
dans SQL Server 2008 et versions ultérieures:
WHERE EnterDate = CONVERT(date,GETDATE())
Notez qu'il n'y a pas non plus de fonction CURDATE
, j'ai donc traduit cela en GETDATE()
Utilisez la condition suivante dans votre clause where
WHERE CAST(DateColumn AS DATE) = CAST(GETDATE() AS DATE)
^------------ Your Column Name with `Date` or 'DateTime' data type
CURDATE()
est une fonction mysql. Dans Sql-Server, nous avons la fonction GETDATE()
pour obtenir la date et l'heure actuelles.
Plus efficace est
WHERE EnterDate > DATEADD(dd, -1, DATEDIFF(dd, 0, GETDATE()))
Merci @D Stanley @marc_S et @Mihai
Ce n'est pas la réponse exacte, mais un exemple montrant comment couper la partie temporelle de la variable date/heure
CONVERT (VARCHAR (10), date_fabrication, 10) = CONVERT (VARCHAR (10), @ date de début, 10))
Enfin je le fais par
WHERE EnterDate> Convert (DATETIME, Convert (varchar, DATEADD (DAY, 0, GETDATE ()), 101))