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

Откуда:
Сообщений: 3
Здравствуйте. Обычно на работе мы используем готовые скрипты, так как познания в Sql довольно небольшие. То есть владею лишь стандартными - выборка из базы, замена определнных значений и т.п.
Понадобылось написать скрипт для корректировки дат в таблице.
Имеем: Таблица из 2-ч столбцов, первый - уникальный номер, второй - дата.
Требуется: выбрать строки по УН, в них а столбце дата все даты увеличить на 5 дней. Проблема в том, что даты требуется выбирать, исключая выходые дни (суббота, воскресенье). Вот тут-то мои познания заканчиваются. Предполагаю, что необходимо временно создать таблицу, в которой будут эти даты без выходных, и затем как-то из нее выбирать. Уважаемые, прошу подсказать, куда копать и как это лучше сделать.
4 дек 14, 12:25    [16948629]     Ответить | Цитировать Сообщить модератору
 Re: Нужна помощь в написании скрипта на корректировку дат  [new]
Maxx
Member [скрыт]

Откуда:
Сообщений: 24290
т.е. перефразируем вам надо поле 2 в таблице подвинуть на +5 дней исключая сб и вскр ? Или есть ещещ какие-то ограничения ?
4 дек 14, 12:34    [16948703]     Ответить | Цитировать Сообщить модератору
 Re: Нужна помощь в написании скрипта на корректировку дат  [new]
Antony7
Member

Откуда:
Сообщений: 3
Maxx
т.е. перефразируем вам надо поле 2 в таблице подвинуть на +5 дней исключая сб и вскр ? Или есть ещещ какие-то ограничения ?


Именно так. В дальнейшем (2015 году), возможно придется исключить праздничные дни, но я доделаю это сам, главное, понять принцип.
4 дек 14, 12:35    [16948718]     Ответить | Цитировать Сообщить модератору
 Re: Нужна помощь в написании скрипта на корректировку дат  [new]
iap
Member

Откуда: Москва
Сообщений: 47142
UPDATE T
SET D=DATEADD(DAY,5,D)
WHERE [УН]=@UN AND DATEDIFF(DAY,0,D)%7 NOT IN(5,6);
4 дек 14, 13:08    [16949059]     Ответить | Цитировать Сообщить модератору
 Re: Нужна помощь в написании скрипта на корректировку дат  [new]
Maxx
Member [скрыт]

Откуда:
Сообщений: 24290
на коленке
create table dbo.test (
   i int identity(1,1) NOT NULL
  ,d datetime not null
)
GO
declare @d datetime ='20120101'
while @d< '20160101'
begin
  insert into dbo.test(d) values(@d )
  set @d =DATEADD(day, 1 , @d)
end


update t 
set t.d = DATEADD(day, 5, t.d)
from dbo.test  t
where DATENAME(dw, t.d) not in ('Sunday', 'Saturday')

select * from dbo.test

drop table dbo.test
4 дек 14, 13:13    [16949104]     Ответить | Цитировать Сообщить модератору
 Re: Нужна помощь в написании скрипта на корректировку дат  [new]
Antony7
Member

Откуда:
Сообщений: 3
iap, Maxx, спасибо, завтра с утра буду разбираться и проверять на резервной копии БД (уже восьмой час вечера, с работы гонят). О результатах отпишусь.
4 дек 14, 13:22    [16949204]     Ответить | Цитировать Сообщить модератору
 Re: Нужна помощь в написании скрипта на корректировку дат  [new]
Maxx
Member [скрыт]

Откуда:
Сообщений: 24290
Antony7,

скрипт iap правильно отработает для ЛЮБОГО сервера,мой только для англичкого.. если стоит русский заменаите английские названия дгней на русские..или ваши локальные
4 дек 14, 13:26    [16949248]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить