某个月内剩余的天数 如何找到当月剩余的天数? 例如,当前月份是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
答案 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)
使用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
答案 5 :(得分:1)
只需使用Datepart功能:
declare @date date
set @date='16 Nov 2016'
select datediff(day, @date, dateadd(month, 1, @date)) - Datepart(DAY,@date)