Comment interroger le champ de 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 je dois obtenir des lignes dans une certaine plage de temps. Exemple, intervalle de temps de 10 minutes.
Actuellement, SQL retourne avec une syntaxe incorrecte près de '12'. "
Vous avez manqué le signe 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 AAAA-MM-JJThh: mm: ss.nnn [Z], car celui-ci ne dépend 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 avez besoin de guillemets autour de la chaîne que vous essayez de transmettre comme 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 conversion explicite de chaînes en dates tout en spécifiant le format:
Cela a fonctionné pour moi dans SQL Server 2005 et 2008:
SELECT * from TABLE
WHERE FIELDNAME > {ts '2013-02-01 15:00:00.001'}
AND FIELDNAME < {ts '2013-08-05 00:00:00.000'}
Vous pouvez exécuter le code ci-dessous
SELECT Time FROM [TableName] where DATEPART(YYYY,[Time])='2018' and DATEPART(MM,[Time])='06' and DATEPART(DD,[Time])='14
Ouvrez le fichier d’accès vers lequel vous essayez d’exporter des données SQL. Supprimer toutes les requêtes qui sont là. Chaque fois que vous exécutez l'assistant d'importation SQL Server, même en cas d'échec, il crée une requête dans la base de données Access qui doit être supprimée avant de pouvoir réexécuter l'exportation SQL Wizard.
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 écrire votre tableau et le poster ici. cela nous aidera à vous donner la bonne réponse rapidement.
select getdate()
O/P
----
2011-05-25 17:29:44.763
select convert(varchar(30),getdate(),131) >= '12/04/2011 12:00:00 AM'
O/P
---
22/06/1432 5:29:44:763PM
D’autres ont déjà dit que les littéraux de date dans SQL Server exigent d’être entourés de guillemets simples, mais j’aimerais ajouter que vous pouvez résoudre votre problème de confusion mois/jour de deux manières (c’est-à-dire que le problème où 25 est considéré comme le mois et 5 le journée) :
Utilisez un Convert(datetime, 'datevalue', style)
explicite où style est l'un des codes de style numériques, voir Conversion et conversion . Le paramètre de style ne sert pas uniquement à convertir les dates en chaînes, mais également à déterminer comment les chaînes sont analysées en fonction des dates.
Utilisez un format indépendant de la région pour les dates stockées sous forme de chaînes. Celui que j'utilise est 'aaaammjjh hh: mm: ss', ou considère le format ISO, yyyy-mm-ddThh:mi:ss.mmm
. Basé sur l'expérimentation, il n'y a AUCUNE autre chaîne de format invariant par la langue. (Bien que je pense que vous pouvez inclure le fuseau horaire à la fin, voir le lien ci-dessus).