2015-10-27 2 views
0

У меня есть небольшая идея для этого, но я не знаю, как интерпретировать его в sql-сервере (MSDN).Выберите первый и последний день месяца в sql-сервере в течение месяца, уже сохраненного в базе данных SQL

if (Month < ActualMonth) 
{ 
    (StartDateReq = FirstDayMonth); 
    (EndDatereq) = LastDayMonth); 
} 
else if (Month = currenTimeStamp) 
{ 
    (EndDateReq = currentTimeStamp); 
} 
+0

Try описанием того, что вы хотите на английском языке. –

+0

Вы хотите выбрать все строки с датами в предыдущем месяце + даты, которые сегодня? –

+0

Смотрите этот предыдущий вопрос http://stackoverflow.com/questions/11743810/how-to-get-first-and-last-day-of-previous-month-with-timestamp-in-sql-server –

ответ

0

Если у вас есть дата в SQL Server, вы можете получить первый и последний день месяца, используя:

select dateadd(day, 1 - day(datecol), datecol) as firstday, 
     dateadd(day, -1, dateadd(month, 1, dateadd(day, 1 - day(datecol), datecol))) as lasstday 

В SQL Server 2012+, вы можете использовать функцию EOMONTH() для последний день месяца.

0

Опираясь на ответ Гордона:

DECLARE @myDate Date = '2015-10-25' 

select DATEADD(DAY, 1 - DAY(@myDate), @myDate) as firstday, 
     CASE WHEN YEAR(@myDate) = YEAR(GETDATE()) AND 
       MONTH(@MyDate) = MONTH(GETDATE()) 
     THEN @MyDate 
     ELSE DATEADD(DAY, -1, DATEADD(MONTH, 1, DATEADD(DAY, 1 - DAY(@myDate), @myDate))) 
     END as lasstday 
Смежные вопросы