Я пытаюсь получить первый и последний день предыдущего месяца. Мне действительно нужен диапазон для предложения BETWEEN
, поэтому мне нужна первая секунда первого дня и последняя секунда последнего дня.Каков самый простой и эффективный способ получить первую и последнюю дату предыдущего месяца?
Это код, который я использую:
set @startDate = DATEADD(mm, DATEDIFF(mm,0,DATEADD(mm, -1, getdate())), 0)
set @endDate = dateadd(ms,-3,DATEADD(mm, DATEDIFF(mm,0,getdate() ), 0))
Однако, на сегодняшний день, это на самом деле возвращение 4/1/2011 и 5/1/2011, которая не является абсолютно точным. Я хочу получить последнюю секунду от 30.04.2011 для endDate.
Я работаю в Интернете и вижу много разных способов получить первый/последний день месяца. Даже на самом SO, я вижу много разных вариантов этого вопроса с множеством разных ответов. Я хотел бы скомпилировать список всех методов для достижения этого, а затем определить, какой из них «лучший» (на основе простоты и эффективности)
(Должен добавить, что я использую SQL Server 2000)
EDIT:
Re в ENDDATE ошибка - этот код на самом деле правильно, проблема была только что @endDate
был smalldatetime. Я изменил его на дату-время, и теперь он работает правильно.
Re: The Edit. Это пример того, как использование '> = AND <' уменьшает объем ошибок, ошибок, сложностей и т. Д. – MatBailie