J'essaie de sélectionner toutes les lignes d'une base de données SQL qui se trouvent entre un intervalle d'heure, pour chaque jour. La colonne DateTime s'appelle "DT" et a le format DateTime suivant: 2019-10-17 16:03:43
J'aimerais extraire toutes les lignes de cette table où la DT était comprise entre 22:00:00 et 02:00:00, pour tous les jours. p> où * devrait être n'importe où ... p> Merci pour votre support! P> < P> Edit: J'ai oublié de mentionner: J'utilise l'interpréteur SQL intégré du navigateur DB pour SQLite P> P>
5 Réponses :
Vous devez extraire la partie temporelle de la date et comparer celle-ci dans la plage. Depuis minuit, entre 22 et 2, vous devrez la diviser en deux comparaisons, le temps compris entre 22 et 0 et entre 0 et 2. P>
Pour voir comment extraire le temps, jetez un coup d'œil à Cette question . P>
Ceci fonctionnera ::
SELECT *
FROM MY_TABLE
WHERE strftime('%H','Dt')>22
OR strftime('%H','Dt')<2
L'heure ne peut pas être supérieure à 22 et plus petite que 2 en même temps. Cette requête ne renverra rien
Je viens de tester monsieur Sir .. ça marche @a_horse_with_no_name imgur.com/a/vyugghen
Eh bien > 10 et <16 code> est quelque chose de complètement différent de > 22 et <2 code> essayez la requête de votre réponse, pas quelque chose de différent
Je teste avec heure actuelle .. Si je mets 22 et 2, cela donnera certainement 0 résultats. Cause Le temps actuel est 12 ici.
Le point est: un seul numéro ne peut pas être supérieur à 22 et b> inférieur à 2 en même temps et c'est ce que votre réponse suggère. Votre condition est équivalente à où 1 = 2 code>, voir un exemple ici: dbfiddle .uk / ...
Ouais je reçois ton point. Trouvera une autre solution. Merci pour la connaissance.
Dans SQLite, il n'y a pas de fonctions DateDiff, Daadd, Datamediff.
avec postgres, en supposant ou si vous souhaitez exclure les horodatages Sur précision dt code> est défini comme horsetamp code> Vous pouvez procéder comme suit: 02:00:00 code> p>
Merci de votre aide. Votre proposition renvoie ce qui suit: Résultat: Jeton non reconnu: ":" A à la ligne 1: Sélectionnez * de MyTable où "DT"> = "DT"
select DT_time from (
select cast (substr(to_char(Dt,'dd-mm-yyyy HH:MM:SS'),12,2) as integer ) as DT_time from MY_TABLE )
where DT_time between 2 and 22;
Résultat: pas de ce type: to_char
entre 22:00:00 et 02:00:00 p>
signifie: p>
xxx pré> blockQuote>
Quels RDBM utilisez-vous? SQL Server, Oracle, MySQL ???
Quel DBMS Produit utilisez-vous? "SQL" n'est qu'une langue de requête, et non le nom d'un produit de base de données spécifique et des fonctions traitant de l'horodatage (date / heure) sont très spécifiques au fournisseur. Veuillez ajouter un tag pour le produit de base de données que vous utilisez
postgreSQL code>,oracle code> ,sql-serveur code>,db2 code>, ...dB-navigateur-sqlite