![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
как в Firebird узнать количество дней в месяце? [Firebird 2.0]
zorik © (2009-01-24 12:02:00)Приходят идеи перебора (28,29,30,31) или как-то от следующего месяца отнять один день...
Труп Васи Доброго (2009-01-26 16:54:00) [1]если FB 2.1, то проще так
select DATEDIFF(day,cast('01.02.2008' as date), cast('01.03.2008' as date)) from rdb$database;
автоматически учитывает високосность года
makz (2009-01-25 15:17:00) [2]в fb2.1 есть dateadd, c ним проще.
Johnmen (2009-01-24 19:41:00) [3]из фака:
<количество дней в месяце даты YourDate> =
==========================================
EXTRACT(DAY FROM
CAST('01.'||EXTRACT(MONTH FROM TmpDate)||'.'||
EXTRACT(YEAR FROM TmpDate) AS DATE) - 1);
где
TmpDate =
CAST('01.'||EXTRACT(MONTH FROM YourDate)||'.'||EXTRACT(YEAR FROM YourDate) AS DATE) + 32;
соответственно подумав, можно получить с -1 к количеству дней в месяце.
zorik (2009-01-24 14:54:00) [4]Работает двумя способами
Виталий Панасенко (2009-01-24 14:40:00) [5]
> zorik © (24.01.09 14:28) [3]
И?
zorik (2009-01-24 14:28:00) [6]http://www.delphimaster.ru/cgi-bin/forum.pl?id=1230191328&n=1
Виталий Панасенко (2009-01-24 14:21:00) [7]Вообще-то, формат даты -ГГГГ-ММ-ДД
zorik (2009-01-24 14:20:00) [8]решил с помощью ХП
m = (extract (month from zdate));
y = (extract (year from zdate));
m = m + 1;
if (m > 12) then
begin
m = 1;
y = y1 + 1;
end
date2 = cast('1.'||m||'.'||y as date) - 1;