SQL Server 本月剩余天数

jdgnovmf  于 2023-02-03  发布在  其他
关注(0)|答案(7)|浏览(212)

给定月份的剩余天数如何计算当前月份的剩余天数?例如,如果当前月份是November,今天的日期是16/11/2016月份的天数- Elapse days =?我想动态计算在我的示例中30 - 16 = 14

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

xuo3flqw1#

由于这是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())得到当前月份的第一天, Package DATEADD加上一个月, Package DATEDIFF返回当前日期和下个月的第一天之间的天数,这就是为什么需要减去1才能得到正确的天数。

f45qwnt8

f45qwnt82#

--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
unftdfkk

unftdfkk3#

只需使用Datepart函数:

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

9w11ddsr4#

将日期更改为getdate()

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

vx6bjr1n5#

DECLARE @date DATE SET @date='16 Nov 2016' SELECT DATEDIFF(DAY, @date,EOMONTH(@date))
ercv8c1e

ercv8c1e6#

使用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
au9on6nz

au9on6nz7#

函数示例

CREATE Or ALTER FUNCTION ReturnDaysLeftInMonth(@Date Date)
RETURNS Int
AS
BEGIN
  RETURN DATEDIFF(DAY, @Date, EOMONTH(@Date)) + 1
END

或使用

Declare @Date Date 
Set @Date=GETDATE()
DATEDIFF(DAY, @Date, EOMONTH(@Date)) + 1

相关问题