Поле типа Дата, SQL

Модераторы: Duncon, Naeel Maqsudov, Игорь Акопян, Хыиуду

Ответить
Dr_Grizzly
Сообщения: 407
Зарегистрирован: 13 сен 2004, 12:05
Откуда: Курган
Контактная информация:

Всем привет! У меня в таблице есть поле Period его тип - Дата/Время (Access). Как в SQL запросе вывести данные по указанной дате???

Код: Выделить всё

Select * from FinansKred
Where period= ???

или 

period >= ??? and  period<= ???

Со строкой и числам все легко получается, а вот с датой как-то не выходит. Пробовал и в опострофы заключать и так писать, и матерное слово StrToData пробовал, нихрена не выходит :)
Чем проще - тем оригинальней, а значит гениально, т.к. все гениальное - просто! ;) Да! Кстати! Ctrl+V реально вставляет!!! ХDD
Аватара пользователя
LAngel
Сообщения: 277
Зарегистрирован: 30 мар 2005, 08:19
Откуда: Ульяновск
Контактная информация:

попробуй указывать формат 'YYYYMMDD', не знаю как в Access, но в MSSQL мне это помогало :)
т.е.
where perion > '20061031' and perion < '20061101'
будет указывать на сегодня ;)
С уважением, Lost Angel...
BBB
Сообщения: 1298
Зарегистрирован: 27 дек 2005, 13:37

Насколько я понимаю, можно воспользоваться преобразованием to_date:

Код: Выделить всё

where perion > to_date ('31.10.2006', 'dd.mm.yyyy') 
  and perion < to_date ('1.11.2006', 'dd.mm.yyyy')
Или, если надо сформировать дату+время на начало/конец дня:

Код: Выделить всё

where perion > to_date ('31.10.2006, 00.00.00', 'dd.mm.yyyy, HH24.MI.SS') 
  and perion < to_date ('1.11.2006, 23.59.59', 'dd.mm.yyyy, HH24.MI.SS')
ПРИМ: на Oracle, по крайней мере, это работает
Аватара пользователя
Игорь Акопян
Сообщения: 1440
Зарегистрирован: 13 окт 2004, 17:11
Откуда: СПБ
Контактная информация:

а что мешает сделать парметризованный запрос?
... where period = :D ate1

и потом задавать Query1.ParamByName('Date1').Value := Date;
Изображение
Absurd
Сообщения: 1228
Зарегистрирован: 26 фев 2004, 13:24
Откуда: Pietari, Venäjä
Контактная информация:

В акцессе даты надо заключать в шарпы #_дата_#. Хотя, binding параметр конечно лучше
2B OR NOT(2B) = FF
Лелик_1044
Сообщения: 340
Зарегистрирован: 22 ноя 2004, 19:15
Откуда: Минск
Контактная информация:

'SELECT DISTINCT A.VALUE, A.GUIDE_ID, A.FARM_ID as TABLE_ID, -1 AS TYPE_ID, A.SOURCE_ID as SOURCE_ID, A.MEASURE_ID as MEASURE_ID, A.PERIOD_ID as PERIOD_ID, A.DATE_FROM, A.TIME_ID, A.DATE_TO, 0 as QRY_TP FROM ATTRIBUTE A WHERE (A.FARM_ID IN (-1,9698)) AND ((A.GUIDE_ID = 13 AND A.TIME_ID=1 AND A.PERIOD_ID=2 AND A.SOURCE_ID=1 AND A.MEASURE_ID=1 AND A.DATE_FROM = TO_DATE('01-07-2006','DD-MM-YYYY') AND A.DATE_TO = TO_DATE('31-07-2006','DD-MM-YYYY') ) OR (A.GUIDE_ID = 13 AND A.TIME_ID=1 AND A.PERIOD_ID=2 AND A.SOURCE_ID=1 AND A.MEASURE_ID=1 AND A.DATE_FROM = TO_DATE('01-08-2006','DD-MM-YYYY') AND A.DATE_TO = TO_DATE('31-08-2006','DD-MM-YYYY') ) OR (A.GUIDE_ID = 14 AND A.TIME_ID=1 AND A.PERIOD_ID=2 AND A.SOURCE_ID=1 AND A.MEASURE_ID=1 AND A.DATE_FROM = TO_DATE('01-07-2006','DD-MM-YYYY') AND A.DATE_TO = TO_DATE('31-07-2006','DD-MM-YYYY') ) OR (A.GUIDE_ID = 14 AND A.TIME_ID=1 AND A.PERIOD_ID=2 AND A.SOURCE_ID=1 AND A.MEASURE_ID=1 AND A.DATE_FROM = TO_DATE('01-08-2006','DD-MM-YYYY') AND A.DATE_TO = TO_DATE('31-08-2006','DD-MM-YYYY') )) ORDER BY 4,3,2'#$D#$A

Пример от моей проги, конечно многое тебе не надо но посомтреть как рботают даты тебе думаю вполне хватит :)
Просто набрать исходники может и любая обезьяна, а придумать и отладить не каждый человек.
Аватара пользователя
Игорь Акопян
Сообщения: 1440
Зарегистрирован: 13 окт 2004, 17:11
Откуда: СПБ
Контактная информация:

офф.
Absurd, эта штуковина (#) называется октоторп ;)
Изображение
Ответить