2011-12-29 3 views
0

У меня есть периоды времени каждые 15 дней, MOM и EOM.Получите МНВ и МОМ любого месяца в SQL Server 2005

Что мне нужно, чтобы проверить, является ли значение даты на поле даты до текущего периода минус 1.

К примеру, если сегодня 12/29, период 12/31, и я необходимо проверить

if prior < 12/15 

Как я могу получить МЫ (конец месяца, я имею в виду, в последний день месяца) и MOM (середина месяца, это как 15 число каждого месяца) с GETDATE() функция без выполнения DATEADD с -15 дней (потому что в feb будет терпеть неудачу, и мне не нужен месяц)

Любая помощь или работа вокруг будут исключены.

Благодаря

+0

Итак, для февраля должно быть 14 месяцев? –

+0

не очень, это всегда 15, но мне не нужен жесткий код. –

+0

например: jan: 15 и 31, feb: 15 и 28 или 29, mar: 15 и 31, apr: 15 и 30, may: 15 и 31 и т. Д. –

ответ

0

мышления в работе вокруг, что я сделал, это было так:

Если фактический день < 15 затем получить месяц фактической, конвертировать в первый день месяца (01) и минус 1 день. Я получаю последний день предыдущего месяца. (EOM - 1 период)

Если фактический день> 15, то предшествующий период (период MOM - 1) составляет: 15 текущего месяца.

Это запрос с if структурой.

Если у кого-то есть лучший ответ, ответьте на него, и я приму его.

Спасибо :)

1

Если вам нужно значение 15, то поместите его в свой код.

Если это противоречит политике вашей компании, то оспорите человека, который сделал эту политику. Написание 5 строк кода для замены двух символов не является хорошим кодированием ...

Если вы написали 5 строк, ваше приложение стало более гибким, возможно, я мог бы понять, но вы все еще «жестко кодируете» 15 в своих сравнениях ,