当月剩余的天数

时间:2016-11-16 11:32:14

标签: sql sql-server sql-server-2008

某个月内剩余的天数 如何找到当月剩余的天数? 例如,当前月份是11月,今天日期是2016年11月16日 月份的天数 - Elapse天数=?我想动态地做 在我的例子中,30 - 16 = 14

declare @date date 
set @date='16 Nov 2016'
select datediff(day, @date, dateadd(month, 1, @date)) - 16 AS DaysLeft

6 个答案:

答案 0 :(得分:6)

由于这是sql server 2008,因此您无法使用EOMonth(2012版本中引入)。
你必须做一些日期添加和日期差异:

SELECT DATEDIFF(DAY, 
                GETDATE(),
                DATEADD(MONTH, 
                        1, 
                        DATEADD(DAY, 1 - DAY(GETDATE()), GETDATE()) 
                       ) 
               ) - 1 

解释:
DATEADD(DAY, 1 - DAY(GETDATE()), GETDATE())获取当月的第一天,包裹DATEADD增加一个月,包裹DATEDIFF返回当前日期与下个月的第一个日期之间的天数。这就是为什么你需要subtruct 1来获得正确的天数。

答案 1 :(得分:2)

--For SQL 2012 And Above Version Use Below Query to Get Count Of Days Left In A Month

DECLARE @date DATE
SET @date=GETDATE()
SELECT DATEDIFF(DAY, @date,EOMONTH(@date)) 

-- And for Sql Server 2008 Use Below Query to Get Count of Days Left for the Month
    DECLARE @date Date 
         SET @date=GETDATE()
         SELECT DATEDIFF(DAY, @date, DATEADD(MONTH, 1, @date)) - DATENAME(DAY,GETDATE())
     AS DaysLeft

答案 2 :(得分:1)

将您的日期更改为getdate()

     declare @date date 
     set @date=GETDATE()
     select datediff(day, @date, dateadd(month, 1, @date)) - DATENAME(DAY,GETDATE())
 AS DaysLeft

答案 3 :(得分:1)

var str = "10000,68866225,77885525,3,787";
var strArr = str.Split(',');

答案 4 :(得分:1)

使用EOMONTHDATEDIFF功能

    declare @date date 
    set @date='16 Nov 2016'
    select datediff(day,@date,eomonth(@date)) as days_left

使用以下解决方案对sql server 2012

的以下版本
    DECLARE @DATE DATE 
    SET @DATE='16 NOV 2016'
    SELECT   DATEDIFF(DAY,@DATE,DATEADD( MM,DATEDIFF(MM,0,@DATE)+1,0))-1 AS DAYS_LEFT

答案 5 :(得分:1)

只需使用Datepart功能:

declare @date date
set @date='16 Nov 2016'
select datediff(day, @date, dateadd(month, 1, @date)) - Datepart(DAY,@date)