Si j'ai une table avec une colonne de date appelée Je veux sélectionner toutes les lignes pour août 25 em>, de 12:00:01 AM em> jusqu'à 11:59:59 em> et rien Pour août 26 em>. Est-il suffisant d'utiliser simplement la condition: p> et je souhaite sélectionner toutes les lignes avant août 25 em>, ne comprenant pas le 25 août. Puis-je faire : p> mydate code>, avec des valeurs telles que
2009-08-25 09: 00: 09.0 code>.
4 Réponses :
Si vous souhaitez des données pour la journée complète 25 et à l'exclusion de tous les 26, vous devez supprimer la première seconde de la 26:
where myDate between Date '2009-08-25' and Date '2009-08-26' - interval '1' second
Que voulez-vous dire au début du 26. Si vous n'incluez pas - 1/24/60/60 dans votre deuxième requête, quel problème peut-il avoir?
Le 26 commence à 00:00, donc si vous voulez exclure tous les 26, vous devez supprimer explicitement cette seconde
Oui, il n'inclut que 8-26 12h00h00h00. Pas une minute après. Les chances d'une rangée se produisent exactement à minuit, c'est bon, c'est bon?
+1 Et vous voudrez peut-être envisager la deuxième notation d'intervalle plus verbeuse, au lieu de 1/24/60/60.
@Saobi: J'ai mis à jour ma réponse: parfois des dates sont stockées sans l'information temporelle (car elle n'est pas pertinente ou inconnue), dans ce cas, ils sont stockés avec un segment de temps de '12: 00h00: 00: C'est pourquoi il est plus sûr de supprimer cette première seconde
Attendez, si les dates sont stockées sans temps (12:00:00), là où la mydate entre la date '2009-08-25' et la date '2009-08-26' n'incluent pas le 08-26, non?
@Saobi: Si les dates sont stockées sans temps, votre entre les 08-25 et le 08-26
Quelle est la requête pour vérifier si des dates contiennent minuit?
Si vous souhaitez vérifier si le composant horaire d'une date contient minuit, vous pouvez effectuer une recherche avec ceci: "Où Trunc (mydate) = mydate", vous pouvez également vérifier que le temps est 00: "Où_char (mydate," hh24miss ' ) = '000000' "
SELECT * FROM TABLE WHERE myDate BETWEEN myDate ('08/25/2009', 'MM/DD/YYYY') AND myDate ('08/26/2009', 'MM/DD/YYYY')
Il a oublié de dire avant les supports
Pour tout obtenir entre le 25 août, à 12h00:01 jusqu'à 11h59:59, inclus, essayez ceci:
Where myDate < to_Date('yyyymmdd', '20090825')
Ce trunct l'année mais vous obtenez mon gist: