2010-01-15 4 views
0

Я пытаюсь выбрать диапазон дат, используя SQL, и я пришел через несколько вопросов:Выберите диапазон дат с помощью SQL

Когда я бегу что-то вдоль линий:

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

это вернется с

ORA-01848: не действительный месяц

. Сама таблица содержит полное значение даты по линиям MM/DD/YYYY HH: mm: ss. Может быть, потому, что я делаю SELECT edate, где edate не «cast» как дата, которую он не может сопоставить?

Когда я бегу что-то вдоль линий:

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

Это будет правильно выбрать даты, если они попадают в диапазон от 10/15/2010 до 12/31/2010, но не те, от 1/1/2011 до 12/15/2010. Другими словами, он не будет охватывать круглый год.

+4

Вы уверены, что это MySQL? ORA-01848 - это сообщение об ошибке Oracle, а To_Date - это функция Oracle – MartW

ответ

0

Чтобы ответить на мой собственный вопрос, да, для того, чтобы сравнить яблоки с яблоками, мне нужно

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

, а также использовать

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

для того, чтобы сделать соответствующую дату для сравнения дат ,

+2

, тогда вы должны принять ответ @ DB, так как он ответил ему за 30 минут до того, как вы это сделали. : | –

2

Попробуйте это. WHERE to_Date (edate, 'MM/DD/YYYY')

Я парень SQL, но я думаю, что если вы конвертируете eDate, вы должны быть хорошими.

+0

Извините, я имел в виду «select ... as edate», поэтому edate не имеет реального значения, и я не могу делать WHERE edate BETWEEN To_Date (edate, ' MM/DD/YYYY ') И To_Date (edate,' MM/DD/YYYY ') – Rio

Смежные вопросы