2010-01-15 6 views
0

Je suis en train de sélectionner une plage de dates en utilisant SQL et j'ai rencontré quelques problèmes:Sélectionnez la plage de dates en utilisant SQL

Quand je lance quelque chose le long des lignes de:

SELECT ... as edate ...  
WHERE edate 
    BETWEEN To_Date('10/15/2010', 'MM/DD/YYYY') 
    AND To_Date('10/15/2011', 'MM/DD/YYYY') 

il va revenir avec un

ORA-01848: pas un mois valide

. La table elle-même contient une valeur de date complète suivant les lignes de MM/JJ/AAAA HH: mm: ss. Serait-ce parce que je suis en train de faire un édit SELECT où edate n'est pas 'cast' comme une date à laquelle il ne peut pas correspondre?

Quand je lance quelque chose le long des lignes de:

WHERE date BETWEEN '10/15/2010' AND '12/15/2011' 

Il choisira les bonnes dates si elles tombent dans la gamme de 10/15/2010 à 12/31/2010, mais pas ceux de 1/1/2011 au 12/15/2010. En d'autres termes, cela ne se déroulera pas toute l'année.

+4

Etes-vous sûr que c'est MySQL? ORA-01848 est un message d'erreur Oracle, et To_Date est une fonction Oracle – MartW

Répondre

0

Pour répondre à ma propre question, oui, afin de comparer des pommes avec des pommes, je devais

select to_date(value, 'MM/DD/YYYY HH24:MI:SS') ... as edate 

et également utiliser

To_Date('10/15/2011', 'MM/DD/YYYY HH24:MI:SS') 

afin de faire une date appropriée à la comparaison de la date .

+2

alors vous devriez accepter la réponse de DB parce qu'il y a répondu 30 minutes avant. : | –

2

Essayez ceci. WHERE to_Date (édate, 'MM/JJ/AAAA')

Je suis un gars SQL, mais je pense que si vous convertissez eDate, vous devriez être bon.

+0

Désolé, je voulais dire "sélectionnez ... comme edate" donc edate n'a pas de signification réelle et je ne peux pas faire un editer WHERE entre TO_Date (edate, ' MM/JJ/AAAA ') ET To_Date (éditer,' MM/JJ/AAAA ') – Rio

Questions connexes