web-dev-qa-db-fra.com

'DATE' n'est pas un nom de fonction intégré reconnu

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() )
7
sajjad

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()

13
D Stanley

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. 

3
M.Ali

Plus efficace est 

WHERE EnterDate > DATEADD(dd, -1, DATEDIFF(dd, 0, GETDATE()))

Merci @D Stanley @marc_S et @Mihai

1
sajjad

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))

0

Enfin je le fais par
WHERE EnterDate> Convert (DATETIME, Convert (varchar, DATEADD (DAY, 0, GETDATE ()), 101))

0
sajjad