2013-12-18 3 views
0

У меня есть столбец (completeddate), что мне нужно сделать следующийзапроса на дату колонке

select * 
from orders 
where completeddate > '01-01-2013' 

Проблемой является дата в поле выглядит следующим образом (ниже)

25-FEB-08 12.00.00.000000000 AM 

формат столбца это

TIMESTAMP(6) 

Как настроить мой запрос, возвращающий строки, где completeddate больше 01-01-2013

+1

Что СУБД вы используете? Вы пробовали «2013-01-01»? – JDB

ответ

-1

Вы попробовали?

SELECT CAST(your_timestamp_field AS DATETIME) FROM orders WHERE completeddate > '2013-01-01' 
0

Перед сопоставлением необходимо преобразовать строку '01 -01-2013 'в объект базы данных. Не знаю, что это тип базы данных, но все базы данных должны обеспечивать функцию для преобразования объектов даты и из строк, вы можете иметь что-то вроде:

where completeddate > TO_DATE('01-01-2013', 'DD-MM-YYYY') 

Надеется, что это помогает.

1

Вы не указали используемую СУБД, но почти все из них хранят даты как число. Формат, который вы видите, почти наверняка является интерпретацией клиентом даты и не имеет никакого отношения к тому, как дата фактически хранится.

Большинство СУБД могут переводить стандартные строковые представления дат в числовое значение даты. Вероятная проблема заключается в том, что вы не используете стандартный формат даты. Вы должны использовать «2013-01-01» или «01/01/2013». По моему опыту, ГГГГ-ММ-ДД (ISO 8601 и RFC 3339) является наименее двусмысленным и наиболее поддерживаемым форматом. Если вы предпочитаете MM/DD/YYYY (прежде всего North American representation), вам обычно нужно использовать обратную косую черту.

1

Попробуйте

select * 
from orders 
where completeddate > CONVERT(DATETIME, '01-01-2013', 105) 

105 для ДД-ММ-ууу

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