Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Помогите, простенький запрос  [new]
aksuz
Member

Откуда: Vladivostok
Сообщений: 33
Недавно взялся за SQL буквально неделю назад, пытаюсь писать в SQL management studio.
вообщем суть запроса такова: вводится дата, надо определить к какой четверти она относится и вывести дату начала этой четверти
Например: вводится дата 20.02.2012, ответ: 01.01.2012

помогите пожалуйста, буду признателен
18 июн 12, 04:12    [12728453]     Ответить | Цитировать Сообщить модератору
 Re: Помогите, простенький запрос  [new]
aksuz
Member

Откуда: Vladivostok
Сообщений: 33
я писал процедурно, получив месяц через month, год через year - через if then присваивал нужный месяц, далее все конвертил в строковые переменные, складывал год месяц и день и конвертил обратно в дату. на что мне сказали : SQL не процедурный язык сделай функциями, в связи с тем что синтаксис я не знаю практически - ничего не выходит..... =/
18 июн 12, 04:36    [12728460]     Ответить | Цитировать Сообщить модератору
 Re: Помогите, простенький запрос  [new]
Crimzic
Member

Откуда: Sydney
Сообщений: 59
См. функцию DATEPART для получения квартала.
А номер месяца можно получить умножением, без использования if..then.
18 июн 12, 05:57    [12728483]     Ответить | Цитировать Сообщить модератору
 Re: Помогите, простенький запрос  [new]
aleks2
Guest
aksuz,

Суть в том, что надо банально иметь табличку с этими самыми началом и кончалом четверти.

declare @Четверти Table(начало datetime, кончало datetime)

insert @Четверти
select '19000101', '19000401',

declare @дата

set @дата = '20120220

select начало from @Четверти where dateadd(year, -datepart(year, @дата), @дата) between начало and кончало
18 июн 12, 06:07    [12728484]     Ответить | Цитировать Сообщить модератору
 Re: Помогите, простенький запрос  [new]
прошел мимо
Guest
aksuz,

можно, например, так
[src][/SRC]
Declare @dat as datetime
Set @dat = '20120312'
select DATEADD(Q, DATEPART(q, @dat) - 1, CAST(CAST(YEAR(@dat) as varchar) as datetime))
Set @dat = '20111021'
select DATEADD(Q, DATEPART(q, @dat) - 1, CAST(CAST(YEAR(@dat) as varchar) as datetime))
18 июн 12, 06:17    [12728487]     Ответить | Цитировать Сообщить модератору
 Re: Помогите, простенький запрос  [new]
aksuz
Member

Откуда: Vladivostok
Сообщений: 33
решил проблему вот так:

declare @date datetime
set @date ='11.10.2010'
SELECT @date =DATEADD(quarter, DATEDIFF(quarter, 0, @date), 0)


cпасибо всем кто пытался помочь.
18 июн 12, 08:49    [12728602]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить