powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Кол-во дней в квартале
5 сообщений из 5, страница 1 из 1
Кол-во дней в квартале
    #32026435
Фотография Дед Маздай
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Товарищи люди, подскажите, pls, как средствами T-SQL получить количество дней в квартале, которому принадлежит текущая дата @d, не прибегая, по возм-ти, к преобразованию в char, дабы не иметь дела с форматом даты текущей сессии. Положение усугубляется тем, что это нужно сделать одной строкой, чтобы засунуть в Custom Member Property.
...
Рейтинг: 0 / 0
Кол-во дней в квартале
    #32026436
Фотография Cat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Так как количество дней в квартале есть величина постоянная, то для дат от 1901 до 2099

case when datepart(month,@d) between 1 and 3 then
case when datepart(year,@d)%4<>0 or datepart(year,@d)=2000 then @k11 else @k12 end
else
case when datepart(month,@d) between 4 and 6 then @k2 else
case when datepart(month,@d) between 7 and 9 then @k3 else @k4 end end end

где
@k11 кол-во дней в 1 квартале високосного года
@k12 кол-во дней в 1 квартале не високосного года
@k2 кол-во дней во 2 квартале
@k3 кол-во дней в 3 квартале
@k4 кол-во дней в 4 квартале
...
Рейтинг: 0 / 0
Кол-во дней в квартале
    #32026437
Фотография Cat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Желаю скорейшего выздоровления.
...
Рейтинг: 0 / 0
Кол-во дней в квартале
    #32026439
Фотография Cat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я тоже переутомился.
Вторая строка:
case when datepart(year,@d)%4=0 then @k11 else @k12 end

2000 год как раз не является исключением из правила "Сотни не високосные"
...
Рейтинг: 0 / 0
Кол-во дней в квартале
    #32026462
Фотография SergSuper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
если лень считать сколько же дней в каждом квартале, то можно учесть что количество дней в квартале это разница от первого дня текущего квартала до первого дня следующего

declare @d datetime
select @d='20010112'


select datediff(dd,
dateadd(qq,datediff(qq,'19650101',@d),'19650101'),
dateadd(qq,datediff(qq,'19650101',@d)+1,'19650101'))
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Кол-во дней в квартале
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]