Добро пожаловать в форум, Guest >> Войти | Регистрация | Поиск | Правила | | В избранное | Подписаться | ||
Все форумы / Microsoft SQL Server |
![]() ![]() |
rustamyan Member Откуда: Сообщений: 11 |
Помогите со скриптом, надо получить "среду" как день недели, независимо который день на данный момент. например если сегодня вторник то надо получить предыдущую среду. В SQL это выглядит так: declare @date datetime; set @date='2013-03-19' SELECT case when datepart(weekday, getdate() >3 then DATEADD(DAY, +2, DATEADD(WEEK, DATEDIFF(WEEK, 0, @date), 0)) else DATEADD(DAY, -5, DATEADD(WEEK, DATEDIFF(WEEK, 0, @date), 0)) end В SSIS Expressions builder не получается, Заранее спасибо |
19 мар 13, 18:42 [14069194] Ответить | Цитировать Сообщить модератору |
Cygapb-007 Member Откуда: Сообщений: 1677 |
Ээээ... а почему такой сложный расчет среды???declare @date datetime='20130319'; select @date, dateadd(d,-DATEDIFF(D,2,@date)%7,@date) |
19 мар 13, 19:24 [14069348] Ответить | Цитировать Сообщить модератору |
rustamyan Member Откуда: Сообщений: 11 |
Cygapb-007, Мне надо в Expression Builder это впихнуть и получить например 20130313 если скрипт запущен сегодня, |
19 мар 13, 19:44 [14069428] Ответить | Цитировать Сообщить модератору |
Гость333 Member Откуда: Сообщений: 3683 |
Не просто сложный, но и некорректный (выдаёт разные значения при разных настройках set datefirst). |
||
19 мар 13, 19:46 [14069431] Ответить | Цитировать Сообщить модератору |
rustamyan Member Откуда: Сообщений: 11 |
Гость333, declare @date datetime; set @date='2013-03-19' SELECT case when datepart(weekday, @date >3 then DATEADD(DAY, +2, DATEADD(WEEK, DATEDIFF(WEEK, 0, @date), 0)) else DATEADD(DAY, -5, DATEADD(WEEK, DATEDIFF(WEEK, 0, @date), 0)) end возвращает то что надо, но мне это надо внедрить в SSIS Expression Builder.. |
19 мар 13, 19:52 [14069447] Ответить | Цитировать Сообщить модератору |
Гость333 Member Откуда: Сообщений: 3683 |
Это вам так только кажется: set datefirst 4 declare @date datetime; set @date='2013-03-19' SELECT case when datepart(weekday, @date) >3 then DATEADD(DAY, +2, DATEADD(WEEK, DATEDIFF(WEEK, 0, @date), 0)) else DATEADD(DAY, -5, DATEADD(WEEK, DATEDIFF(WEEK, 0, @date), 0)) end
Насчёт того, как это перенести в SSIS, я не знаю, сорри. |
||
19 мар 13, 20:05 [14069493] Ответить | Цитировать Сообщить модератору |
Cygapb-007 Member Откуда: Сообщений: 1677 |
подходит такой вариант? (DT_DATE) DATEADD("D",-DATEDIFF( "D", (DT_DATE)"2000-01-03", @[User::myDate]) %7 , @[User::myDate]) |
19 мар 13, 21:59 [14069726] Ответить | Цитировать Сообщить модератору |
rustamyan Member Откуда: Сообщений: 11 |
Cygapb-007, спасибо, но этот скрипт возвращает '3/18/2013 2:19:03 PM', а мне надо '20130313' |
19 мар 13, 22:21 [14069787] Ответить | Цитировать Сообщить модератору |
Cygapb-007 Member Откуда: Сообщений: 1677 |
машинально указал понедельник:) правильная дата - 2000-01-05. Конвертацию даты в нужный формат придумайте сами |
||
20 мар 13, 00:52 [14070188] Ответить | Цитировать Сообщить модератору |
rustamyan Member Откуда: Сообщений: 11 |
Cygapb-007, спасибо огромное |
20 мар 13, 19:35 [14074048] Ответить | Цитировать Сообщить модератору |
Все форумы / Microsoft SQL Server | ![]() |