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

Откуда:
Сообщений: 103
Доброго времени суток!
Руководству потребовался отчет, в котором недели считаются с четверга по пятницу.
Подскажите плз, как написать функцию, чтобы вместе со стандартными годами и месяцами были нестандартные недели?
28 июн 12, 16:17    [12789688]     Ответить | Цитировать Сообщить модератору
 Re: Нестандартная неделя  [new]
Alexandr Kr.
Member

Откуда: Украина, Харьков
Сообщений: 165
Agrotaker,

Может это вам поможет
SET DATEFIRST
28 июн 12, 16:20    [12789707]     Ответить | Цитировать Сообщить модератору
 Re: Нестандартная неделя  [new]
Baddy
Member

Откуда: Харьков
Сообщений: 174
Agrotaker,

set datefirst
&
28 июн 12, 16:21    [12789711]     Ответить | Цитировать Сообщить модератору
 Re: Нестандартная неделя  [new]
Glory
Member

Откуда:
Сообщений: 104751
Agrotaker
чтобы вместе со стандартными годами и месяцами были нестандартные недели?

Были где ?
28 июн 12, 16:21    [12789712]     Ответить | Цитировать Сообщить модератору
 Re: Нестандартная неделя  [new]
iap
Member

Откуда: Москва
Сообщений: 47145
В сессии выполнять
SET DATEFIRST 4;
???
Или в выражениях хитрым образом пользоваться @@DATEFIRST
Или использовать разницу в неделях от 4 января 1900 года
DATEDIFF(WEEK,4,@Date)
28 июн 12, 16:23    [12789731]     Ответить | Цитировать Сообщить модератору
 Re: Нестандартная неделя  [new]
Agrotaker
Member

Откуда:
Сообщений: 103
Glory
Agrotaker
чтобы вместе со стандартными годами и месяцами были нестандартные недели?

Были где ?

в общей выборке.
стандартно мы имеем год - месяц - неделя, вот неделя должна начинаться не с понедельника.
28 июн 12, 16:47    [12789890]     Ответить | Цитировать Сообщить модератору
 Re: Нестандартная неделя  [new]
Glory
Member

Откуда:
Сообщений: 104751
Agrotaker
в общей выборке.

И что мешает вам держать в поле "неделя" нужный номер недели ?
28 июн 12, 16:49    [12789908]     Ответить | Цитировать Сообщить модератору
 Re: Нестандартная неделя  [new]
Agrotaker
Member

Откуда:
Сообщений: 103
Glory
Agrotaker
в общей выборке.

И что мешает вам держать в поле "неделя" нужный номер недели ?

например берем даты от 01.01.2012
системно первая неделя определяется с 1-го января (в этом году это была среда)
вторая неделя начинается с 6-го января (это был понедельник)
нужно, чтобы первая неделя и все последующие начинались с четверга и заканчивались в пятницу.
28 июн 12, 16:59    [12789985]     Ответить | Цитировать Сообщить модератору
 Re: Нестандартная неделя  [new]
Glory
Member

Откуда:
Сообщений: 104751
Agrotaker
например берем даты от 01.01.2012

Что за "берем" опять ? Откуда берем - из воздуха ?
28 июн 12, 17:00    [12789995]     Ответить | Цитировать Сообщить модератору
 Re: Нестандартная неделя  [new]
Agrotaker
Member

Откуда:
Сообщений: 103
если set datefirst 5;
то 1 января была среда:)

declare @turn table (
t_date date
)

insert @turn (t_date)
select '20120101'
union all select '20120102'
union all select '20120103'
union all select '20120104'
union all select '20120105'
union all select '20120106'
union all select '20120107'
union all select '20120108'
union all select '20120109'
SELECT YEAR(t_date) as YY,
Month(t_date) as MM,
day(t_date) as DD,
DATEPART(ww,t_date) as WW,
DATEPART(weekday,t_date) as WD FROM @turn
28 июн 12, 17:16    [12790119]     Ответить | Цитировать Сообщить модератору
 Re: Нестандартная неделя  [new]
Agrotaker
Member

Откуда:
Сообщений: 103
2012 1 1 1 7
2012 1 2 2 1
2012 1 3 2 2
2012 1 4 2 3
2012 1 5 2 4
2012 1 6 2 5
2012 1 7 2 6
2012 1 8 2 7
2012 1 9 3 1

вот что получается.

а вот что хотелось бы:

2012 1 1 1 7
2012 1 2 1 1
2012 1 3 1 2
2012 1 4 1 3
2012 1 5 1 4
2012 1 6 2 5
2012 1 7 2 6
2012 1 8 2 7
2012 1 9 2 1
28 июн 12, 17:18    [12790131]     Ответить | Цитировать Сообщить модератору
 Re: Нестандартная неделя  [new]
iap
Member

Откуда: Москва
Сообщений: 47145
Agrotaker
Glory
пропущено...

И что мешает вам держать в поле "неделя" нужный номер недели ?

например берем даты от 01.01.2012
системно первая неделя определяется с 1-го января (в этом году это была среда)
вторая неделя начинается с 6-го января (это был понедельник)
нужно, чтобы первая неделя и все последующие начинались с четверга и заканчивались в пятницу.
Сегодня номер недели для Вас:
SELECT DATEDIFF(WEEK,STR(YEAR(CURRENT_TIMESTAMP)),DATEADD(DAY,-4,CURRENT_TIMESTAMP))+1;
Правильно?
28 июн 12, 17:26    [12790172]     Ответить | Цитировать Сообщить модератору
 Re: Нестандартная неделя  [new]
iap
Member

Откуда: Москва
Сообщений: 47145
Agrotaker
если set datefirst 5;
то 1 января была среда:)
Что за хрень?!
1 января этого года было воскресеньем независимо от какого-то там DATEFIRST
смотреть надо
DATENAME(WEEKDAY,'2012');
28 июн 12, 17:31    [12790197]     Ответить | Цитировать Сообщить модератору
 Re: Нестандартная неделя  [new]
Agrotaker
Member

Откуда:
Сообщений: 103
iap
Agrotaker
если set datefirst 5;
то 1 января была среда:)
Что за хрень?!
1 января этого года было воскресеньем независимо от какого-то там DATEFIRST
смотреть надо
DATENAME(WEEKDAY,'2012');


если DATEPART(weekday, CreatedDateTime) говорит 3 - для меня это среда:)
28 июн 12, 17:35    [12790224]     Ответить | Цитировать Сообщить модератору
 Re: Нестандартная неделя  [new]
Glory
Member

Откуда:
Сообщений: 104751
Agrotaker
если DATEPART(weekday, CreatedDateTime) говорит 3 - для меня это среда:)

А если DATENAME(dw, '2012') при этом говорит Sunday, то у вас разрыв мозга наступает ?
28 июн 12, 17:42    [12790268]     Ответить | Цитировать Сообщить модератору
 Re: Нестандартная неделя  [new]
Agrotaker
Member

Откуда:
Сообщений: 103
iap - Спасибо!
28 июн 12, 17:49    [12790323]     Ответить | Цитировать Сообщить модератору
 Re: Нестандартная неделя  [new]
Agrotaker
Member

Откуда:
Сообщений: 103
Glory
Agrotaker
если DATEPART(weekday, CreatedDateTime) говорит 3 - для меня это среда:)

А если DATENAME(dw, '2012') при этом говорит Sunday, то у вас разрыв мозга наступает ?

С ноября месяца - ни единого разрыва ©
28 июн 12, 17:52    [12790343]     Ответить | Цитировать Сообщить модератору
 Re: Нестандартная неделя  [new]
Glory
Member

Откуда:
Сообщений: 104751
Agrotaker
С ноября месяца - ни единого разрыва ©

Если вы ведете отсчет начала недели с пятницы, то как среда может быть 3-им днем ?
28 июн 12, 17:56    [12790379]     Ответить | Цитировать Сообщить модератору
 Re: Нестандартная неделя  [new]
Agrotaker
Member

Откуда:
Сообщений: 103
нет.
я для примера написал. выгрузил данные и там вот такая картина:
год месяц число неделя день недели
2012 1 1 1 3
2012 1 2 2 4
2012 1 3 2 5

конечно я прочитал, что первое января была среда.
это потом обнаружил set datafirst в запросе, который искаверкал действительность.
28 июн 12, 18:52    [12790608]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить