Comment interroger un champ de la base de données DateTime dans une certaine plage ?
J'utilise SQL SERVER 2005
Code d'erreur ci-dessous
SELECT *
FROM TABLENAME
WHERE DateTime >= 12/04/2011 12:00:00 AM
AND DateTime <= 25/05/2011 3:53:04 AM
Notez que j'ai besoin d'obtenir des lignes dans une certaine plage de temps. Par exemple, une période de 10 minutes.
Actuellement, SQL renvoie une syntaxe incorrecte près de '12' ;." ;
Vous avez oublié le guillemet simple :
SELECT *
FROM TABLENAME
WHERE DateTime >= '12/04/2011 12:00:00 AM' AND DateTime <= '25/05/2011 3:53:04 AM'
Il est également recommandé d'utiliser le format ISO8601 YYYYY-MM-DDTh:mm:ss.nnn[ Z ], car celui-ci ne dépendra pas de la culture locale de votre serveur.
SELECT *
FROM TABLENAME
WHERE
DateTime >= '2011-04-12T00:00:00.000' AND
DateTime <= '2011-05-25T03:53:04.000'
Vous devez placer des guillemets autour de la chaîne que vous essayez de faire passer pour une date, et vous pouvez également utiliser BETWEEN ici :
SELECT *
FROM TABLENAME
WHERE DateTime BETWEEN '04/12/2011 12:00:00 AM' AND '05/25/2011 3:53:04 AM'
Voir la réponse à la question suivante pour des exemples sur la façon de convertir explicitement des chaînes de caractères en dates tout en spécifiant le format :
https://stackoverflow.com/questions/207190/sql-server-string-to-date-conversion
SELECT *
FROM TABLENAME
WHERE [DateTime] >= '2011-04-12 12:00:00 AM'
AND [DateTime] <= '2011-05-25 3:35:04 AM'
Si cela ne fonctionne pas, veuillez créer un script pour votre tableau et le poster ici. Cela nous aidera à vous donner la bonne réponse rapidement.