Firebird и SELECT с поле тип TimeStamp
3 отговора
331 прегледа
Firebird и SELECT с поле тип TimeStamp
Имам таблица на Firebird 1.5.2 в която има колона от тип TimeStamp. Как мога да избера всички записи от таблицата от определен месец, например "февруари" директно със SELECT заявка? Нещо от сорта на:
SELECT * FROM my_table WHERE dt_stamp = '02.2005'
Tова естествено дава грешка - какво да напиша след WHERE?
Мерси предварително!
SELECT * FROM my_table WHERE dt_stamp = '02.2005'
Tова естествено дава грешка - какво да напиша след WHERE?
Мерси предварително!
Re: Firebird и SELECT с поле тип TimeStamp
За Февруари:
SELECT * FROM my_table WHERE extract( month from dt_stamp)=2
За Февруари 2005 може
SELECT * FROM my_table WHERE extract( month from dt_stamp)=2 and extract( year from dt_stamp)=2005
но няма да ползва индекси.
По-добро е:
SELECT * FROM my_table WHERE dt_stamp>='1.2.2005' and dt_stamp<'1.3.2005'
SELECT * FROM my_table WHERE extract( month from dt_stamp)=2
За Февруари 2005 може
SELECT * FROM my_table WHERE extract( month from dt_stamp)=2 and extract( year from dt_stamp)=2005
но няма да ползва индекси.
По-добро е:
SELECT * FROM my_table WHERE dt_stamp>='1.2.2005' and dt_stamp<'1.3.2005'
Редактирано от NDeu на
Re: Firebird и SELECT с поле тип TimeStamp
Третият вариант наистина е най-удачен, благодаря за идеята.
Още един въпрос по отношение на датите: как се интерпретира формата на датата (напр. "dd.mm.yy") и зависи ли той от регионалните настройки на машината, на която е пуснат сървъра? По-точно, от какво се определя какъв да бъде разделитея (точката в случая), и дали месеца е първото или второто число в датата (напр. в 1.3.2005)?
10x отново!
Още един въпрос по отношение на датите: как се интерпретира формата на датата (напр. "dd.mm.yy") и зависи ли той от регионалните настройки на машината, на която е пуснат сървъра? По-точно, от какво се определя какъв да бъде разделитея (точката в случая), и дали месеца е първото или второто число в датата (напр. в 1.3.2005)?
10x отново!
Re: Firebird и SELECT с поле тип TimeStamp
Формата на датата на сървъра е твърдо кодиран и не зависи от рег. настройки.
select 'равни' from rdb$database
where cast('25 Dec 2005' as DATE)=cast('25.12.2005' as date)
and cast('25 Dec 2005' as DATE)=cast('12/25/2005' as date)
and cast('25 Dec 2005' as DATE)=cast('12-25-2005' as date)
and cast('25 Dec 2005' as DATE)=cast('25-Dec-2005' as date)
Редактирано от NDeu на