Добро пожаловать в форум, Guest >> Войти | Регистрация | Поиск | Правила | | В избранное | Подписаться | ||
Все форумы / Microsoft SQL Server |
![]() ![]() |
RegisteredUser Member Откуда: Сообщений: 637 |
Коллеги! Погуглил, но что-то не нашел. Нужно в скрипте определять пока первое воскресенье месяца (но лучше сразу что-то универсальное: любой N-ый день недели). Как? |
26 окт 17, 10:40 [20901168] Ответить | Цитировать Сообщить модератору |
iap Member Откуда: Москва Сообщений: 47061 |
Я вроде вот тут писал: https://www.sql.ru/faq/faq_topic.aspx?fid=998 |
26 окт 17, 10:43 [20901180] Ответить | Цитировать Сообщить модератору |
rnk Member Откуда: Сообщений: 126 |
Кстати, последний день месяца так будет быстрее: return DATEADD(d,-1,DATEADD(m,1,DATEADD(d,1-DAY(@date),@date))) |
||
26 окт 17, 11:03 [20901269] Ответить | Цитировать Сообщить модератору |
TaPaK Member Откуда: Kiev Сообщений: 6801 |
rnk, есть уже EOMONTH |
26 окт 17, 11:05 [20901274] Ответить | Цитировать Сообщить модератору |
RegisteredUser Member Откуда: Сообщений: 637 |
Спасибо! |
26 окт 17, 11:07 [20901280] Ответить | Цитировать Сообщить модератору |
iap Member Откуда: Москва Сообщений: 47061 |
![]() |
||
26 окт 17, 12:25 [20901652] Ответить | Цитировать Сообщить модератору |
LSV Member [заблокирован] Откуда: Киев Сообщений: 30817 |
Сделать табличку календарь. Сделать нужные поля. Зачитывать оттуда простыми запросами. |
26 окт 17, 13:46 [20902081] Ответить | Цитировать Сообщить модератору |
rnk Member Откуда: Сообщений: 126 |
По моим тестам, раза в полтора (на 100М записей 58 секунд против 84). Нет преобразований типов и строковых операций, чистая арифметика, отсюда и выигрыш. Впрочем, как уже любезно напомнил TaPaK, начиная с MSSQL 2012 есть функция EOMOTH, отработавшая на том же массиве за 52 секунды. Если честно, я думал, будет быстрее. |
||||
26 окт 17, 14:21 [20902282] Ответить | Цитировать Сообщить модератору |
Руслан Дамирович Member Откуда: Резиновая нерезиновая Сообщений: 942 |
вообще не понимаю этой функции. для чего она нужна? если нужно посмотреть все данные в месяце, то это @date >= BOMONTH AND @date < BOMONTH особенно, если @date совсем не DATE, а DATETIME... но EOMONTH есть, а BOMONTH нет! |
||
26 окт 17, 14:29 [20902340] Ответить | Цитировать Сообщить модератору |
Руслан Дамирович Member Откуда: Резиновая нерезиновая Сообщений: 942 |
Точнее, @date >= BOMONTH( @date, 0 ) AND @date < BOMONTH( @date, 1 ) |
||
26 окт 17, 14:31 [20902353] Ответить | Цитировать Сообщить модератору |
rnk Member Откуда: Сообщений: 126 |
Мне как-то понадобилась (правда, сам написал). Пусть будет, пить-есть не просит. Больше функций, хороших и разных! |
||||
26 окт 17, 14:40 [20902414] Ответить | Цитировать Сообщить модератору |
TaPaK Member Откуда: Kiev Сообщений: 6801 |
Руслан Дамирович,@date > EOMONTH( @date, -1 ) AND @date <= BOMONTH( @date, 0 ) |
26 окт 17, 14:44 [20902438] Ответить | Цитировать Сообщить модератору |
TaPaK Member Откуда: Kiev Сообщений: 6801 |
на практике я точно нигде не написал её :) но если нужен перый/последний день месяца то запись короче |
26 окт 17, 14:47 [20902454] Ответить | Цитировать Сообщить модератору |
Все форумы / Microsoft SQL Server | ![]() |