取得兩個日期之間的相差日數,可以用Datediff()函數求得由特定日期到今天為止的「經過日數」,或是由今天到特定日期為止的「剩餘日數」。
語法
1
Datediff(datepart, date1, date2)
用datepart單位來取得date1到date2的差額,datepart的單位與Dateadd()函數一樣,可以指定year、month、day。
求剩餘日數
顯示到月底為止的剩餘日數
1
2
3
4
5
--月底為止的剩餘日數 (convert()組字串求月底日期)
select DATEDIFF(DAY, GETDATE(),DATEADD(DAY, -1, DATEADD(MONTH, 1, CONVERT(char(7),GETDATE(),111)+'/1'))) "剩餘日數"
--月底為止的剩餘日數 (datediff()求月底日期)
select DATEDIFF(DAY, GETDATE(),DATEADD(DAY, -1, DATEADD(MONTH, DATEDIFF(MONTH,0,GETDATE())+1,0))) "剩餘日數"
Convert()組字串求月底日期順序
1
2
3
4
5
6
7
8
9
10
11
12
13
14
--1.下個月
select DATEADD(MONTH, 1, GETDATE())
--2.當月第一天(組字串)
select CONVERT(char(7),GETDATE(),111)+'/1' -- 2023/12/1
--3.下個月第一天(1+2)
select DATEADD(MONTH, 1, CONVERT(char(7),GETDATE(),111)+'/1') --2021/01/01
--4.月底日期 = 下個月第一天-1
select DATEADD(DAY, -1, DATEADD(MONTH, 1, CONVERT(char(7),GETDATE(),111)+'/1'))
--5.月底為止的剩餘日數
select DATEDIFF(DAY, GETDATE(),DATEADD(DAY, -1, DATEADD(MONTH, 1, CONVERT(char(7),GETDATE(),111)+'/1'))) "剩餘日數"
求月底日期 DATEADD() + DATEDIFF()
當月的最後一天 = 下個月的第一天-1
1
2
--當月的最後一天 = 下個月的第一天-1
select DATEADD(DAY, -1, DATEADD(MONTH, DATEDIFF(MONTH,0,GETDATE())+1,0))
DATEDIFF(MONTH,0,GETDATE())為計算當日期和 “1900-01-01 00:00:00.000”這個日期之間的月數。
DATEADD()語法
1
Dateadd(datepart, number, date)
datepart可以指定加減運算的單位year、month、day。
DATEDIFF()語法
1
Datediff(datepart, date1, date2)
- 用
datepart單位來取得date1到date2的差額, datepart的單位與Dateadd()函數一樣,可以指定year、month、day