給定月份剩餘天數 如何查找當月剩餘的天數? 如果當前月份是11月和今天的日期是2016年11月16日 月的天數 - 經過天數=?我想這樣做動態 在我的例子30 - 16 = 14當月剩餘天數
declare @date date
set @date='16 Nov 2016'
select datediff(day, @date, dateadd(month, 1, @date)) - 16 AS DaysLeft
給定月份剩餘天數 如何查找當月剩餘的天數? 如果當前月份是11月和今天的日期是2016年11月16日 月的天數 - 經過天數=?我想這樣做動態 在我的例子30 - 16 = 14當月剩餘天數
declare @date date
set @date='16 Nov 2016'
select datediff(day, @date, dateadd(month, 1, @date)) - 16 AS DaysLeft
只需使用日期部分功能:
declare @date date
set @date='16 Nov 2016'
select datediff(day, @date, dateadd(month, 1, @date)) - Datepart(DAY,@date)
更改日期GETDATE()
declare @date date
set @date=GETDATE()
select datediff(day, @date, dateadd(month, 1, @date)) - DATENAME(DAY,GETDATE())
AS DaysLeft
DECLARE @date DATE SET @date='16 Nov 2016' SELECT DATEDIFF(DAY, @date,EOMONTH(@date))
使用EOMONTH
和DATEDIFF
功能
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
--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
由於這是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
增加了1個月,包裝DATEDIFF
返回的天數在當前日期和下個月的第一個日期之間。這就是爲什麼你需要設置1來獲得正確的天數。
非常感謝,它完美地工作 – JonWay
[很高興幫助: - )](http://meta.stackoverflow.com/questions/291325/how-to-show-appreciation-到一個用戶-ON-計算器/ 291327#291327) –
,這是一個2012的功能,我相信 – Tanner