Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 datepart(ISO_WEEK,'20121231') -- 201201, а вернуть нужно 201301?  [new]
Focha
Member

Откуда: Москва
Сообщений: 509
Как получить корректный год?

select datepart(YYYY,'20121231') * 100 + datepart(ISO_WEEK,'20121231') --201201
1 дек 17, 16:54    [20999091]     Ответить | Цитировать Сообщить модератору
 Re: datepart(ISO_WEEK,'20121231') -- 201201, а вернуть нужно 201301?  [new]
Руслан Дамирович
Member

Откуда: Резиновая нерезиновая
Сообщений: 940
Focha
Как получить корректный год?
select datepart(YYYY,'20121231') * 100 + datepart(ISO_WEEK,'20121231') --201201

Сия потребность непонятна.
SET DATEFIRST 1
DECLARE @date DATE = '20121231'
SELECT DATEPART( YEAR, DATEADD( DAY, 7 - DATEPART( WEEKDAY, @date ), @date ) ) * 100 + 1
1 дек 17, 17:00    [20999111]     Ответить | Цитировать Сообщить модератору
 Re: datepart(ISO_WEEK,'20121231') -- 201201, а вернуть нужно 201301?  [new]
Focha
Member

Откуда: Москва
Сообщений: 509
Руслан Дамирович
Focha
Как получить корректный год?
select datepart(YYYY,'20121231') * 100 + datepart(ISO_WEEK,'20121231') --201201

Сия потребность непонятна.
SET DATEFIRST 1
DECLARE @date DATE = '20121231'
SELECT DATEPART( YEAR, DATEADD( DAY, 7 - DATEPART( WEEKDAY, @date ), @date ) ) * 100 + 1


я сделал так
select datepart(YYYY, DATEDIFF(DAY,0,'20131230')/7*7+6) *100
     + datepart(ISO_WEEK, DATEDIFF(DAY,0,'20131230')/7*7+6)


Я хочу получить корректные недели.
1 дек 17, 17:14    [20999146]     Ответить | Цитировать Сообщить модератору
 Re: datepart(ISO_WEEK,'20121231') -- 201201, а вернуть нужно 201301?  [new]
iap
Member

Откуда: Москва
Сообщений: 46983
Focha
Я хочу получить корректные недели.
А что вас не устраивает?
Неделя началась с понедельника, '20121231', все остальные дни в январе 2013, - это первая неделя 2013 года.
Всё правильно.
2 дек 17, 17:24    [21000779]     Ответить | Цитировать Сообщить модератору
 Re: datepart(ISO_WEEK,'20121231') -- 201201, а вернуть нужно 201301?  [new]
iap
Member

Откуда: Москва
Сообщений: 46983
SELECT (DATEPART(YEAR,'20121231')
+CASE WHEN DATEPART(ISO_WEEK,'20121231')=1 AND MONTH('20121231')=12 THEN 1 WHEN DATEPART(ISO_WEEK,'20121231')>1 AND MONTH('20121231')=1 THEN -1 END) * 100
+DATEPART(ISO_WEEK,'20121231');
2 дек 17, 19:00    [21000922]     Ответить | Цитировать Сообщить модератору
 Re: datepart(ISO_WEEK,'20121231') -- 201201, а вернуть нужно 201301?  [new]
iap
Member

Откуда: Москва
Сообщений: 46983
Поправка:
SELECT (DATEPART(YEAR,'20121231')
+CASE WHEN DATEPART(ISO_WEEK,'20121231')=1 AND MONTH('20121231')=12 THEN 1 WHEN DATEPART(ISO_WEEK,'20121231')>50 AND MONTH('20121231')=1 THEN -1 ELSE 0 END) * 100
+DATEPART(ISO_WEEK,'20121231');
2 дек 17, 19:44    [21001040]     Ответить | Цитировать Сообщить модератору
 Re: datepart(ISO_WEEK,'20121231') -- 201201, а вернуть нужно 201301?  [new]
Focha
Member

Откуда: Москва
Сообщений: 509
В итоги сделали таблицу с корректными номерами недели и годом.
25 дек 17, 20:29    [21061517]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить