--獲取當(dāng)前月的倒數(shù)第二天
創(chuàng)新互聯(lián)公司專業(yè)為企業(yè)提供合作網(wǎng)站建設(shè)、合作做網(wǎng)站、合作網(wǎng)站設(shè)計、合作網(wǎng)站制作等企業(yè)網(wǎng)站建設(shè)、網(wǎng)頁設(shè)計與制作、合作企業(yè)網(wǎng)站模板建站服務(wù),10年合作做網(wǎng)站經(jīng)驗,不只是建網(wǎng)站,更提供有價值的思路和整體網(wǎng)絡(luò)服務(wù)。
SELECT?DATEADD(DD,-DAY(DATEADD(M,1,GETDATE()))-1,DATEADD(M,1,GETDATE()))?
--這個算法其實就是利用DATEADD函數(shù)獲取指定日期在指定月的第n天,然后添加一個月時間到下個月的第n天,然后倒退n天獲取指定月的最后一天,再減1就是倒數(shù)第二天
--你可以將其中GETDATE()換成你的指定日期
select * from 表 where datediff(day,日期段,getdate())=15上面這個是查詢15天內(nèi)的信息
1、使用getdate()獲取當(dāng)前時間。
2、使用dateadd()來獲取當(dāng)前時間的前N天日期1、后N天日期2。
3、檢索窗口時間日期1,日期2.
SELECT
DATEPART(YEAR, GETDATE()) AS 年,
DATEPART(MONTH, GETDATE()) AS 月,
DATEPART(DAY, GETDATE()) AS 日,
DATEPART(HOUR, GETDATE()) AS 時,
DATEPART(MINUTE, GETDATE()) AS 分,
DATEPART(SECOND, GETDATE()) AS 秒,
DATEPART(MILLISECOND, GETDATE()) AS 毫秒,
DATEPART(QUARTER, GETDATE()) AS 季度,
DATEPART(DAYOFYEAR, GETDATE()) AS 年天數(shù),
DATEPART(WEEK, GETDATE()) AS 年周數(shù),
DATEPART(WEEKDAY, GETDATE()) AS 本周天數(shù),
DATENAME(YEAR, GETDATE()) AS 年,
DATENAME(MONTH, GETDATE()) AS 月,
DATENAME(DAY, GETDATE()) AS 日,
DATENAME(HOUR, GETDATE()) AS 時,
DATENAME(MINUTE, GETDATE()) AS 分,
DATENAME(SECOND, GETDATE()) AS 秒,
DATENAME(MILLISECOND, GETDATE()) AS 毫秒,
DATENAME(QUARTER, GETDATE()) AS 季度,
DATENAME(DAYOFYEAR, GETDATE()) AS 年天數(shù),
DATENAME(WEEK, GETDATE()) AS 年周數(shù),
DATENAME(WEEKDAY, GETDATE()) AS 本周數(shù)
select dateadd(day, -1, getdate()) 減少1天。
DATEADD函數(shù),可以增加/減少指定的小時、分、天、年、月、周等。
select dateadd(day, 2, getdate()) --增加兩天。
select dateadd(year, -2, getdate()) --減少兩年。
轉(zhuǎn)自:
--DATEDIFF ( datepart , startdate , enddate )
--DATEDIFF函數(shù)計算兩個日期之間的小時、天、周、月、年等時間間隔總數(shù)
--DATEADD ( datepart , number, date )
--DATEADD函數(shù)計算一個日期通過給時間間隔加減來獲得一個新的日期
--計算一個月第一天
SELECT? DATEADD(mm,? DATEDIFF(mm,0,getdate()),? 0)
--本周的星期一,這里我是用周(wk)的時間間隔來計算哪一天是本周的星期一。
SELECT? DATEADD(wk,? DATEDIFF(wk,0,getdate()),? 0)
--一年的第一天,現(xiàn)在用年(yy)的時間間隔來顯示這一年的第一天。
SELECT? DATEADD(yy,? DATEDIFF(yy,0,getdate()),? 0)
--季度的第一天,假如你要計算這個季度的第一天,這個例子告訴你該如何做。
SELECT? DATEADD(qq,? DATEDIFF(qq,0,getdate()),? 0)
--上個月的最后一天,這是一個計算上個月最后一天的例子。它通過從一個月的最后一天這個例子上減去3毫秒來獲得。有一點要記住,在Sql? Server中時間是精確到3毫秒。這就是為什么我需要減去3毫秒來獲得我要的日期和時間。
SELECT? dateadd(ms,-3,DATEADD(mm,? DATEDIFF(mm,0,getdate()),? 0))
--去年的最后一天,連接上面的例子,為了要得到去年的最后一天,你需要在今年的第一天上減去3毫秒。
SELECT? dateadd(ms,-3,DATEADD(yy,? DATEDIFF(yy,0,getdate()),? 0))
--本月的最后一天,現(xiàn)在,為了獲得本月的最后一天,我需要稍微修改一下獲得上個月的最后一天的語句。修改需要給用DATEDIFF比較當(dāng)前日期和“1900-01-01”返回的時間間隔上加1。通過加1個月,我計算出下個月的第一天,然后減去3毫秒,這樣就計算出了這個月的最后一天。這是計算本月最后一天的SQL腳本。
SELECT? dateadd(ms,-3,DATEADD(mm,? DATEDIFF(m,0,getdate())+1,? 0))
--本年的最后一天,你現(xiàn)在應(yīng)該掌握這個的做法,這是計算本年最后一天腳本
SELECT? dateadd(ms,-3,DATEADD(yy,? DATEDIFF(yy,0,getdate())+1,? 0))
--本月的第一個星期一,好了,現(xiàn)在是最后一個例子。這里我要計算這個月的第一個星期一。這是計算的腳本。
SELECT? DATEADD(wk,? DATEDIFF(wk,0,dateadd(dd,6-datepart(day,getdate()),getdate())),? 0)
--a. 本月的第一天
select dateadd(mm, datediff(mm,0,getdate()), 0) AS 本月的第一天
--b. 本月的最后一天
select dateadd(ms,-3,dateadd(mm, datediff(mm,0,getdate())+1, 0)) AS 本月的最后一天
--c. 上個月的最后一天
select dateadd(ms,-3,dateadd(mm, datediff(mm,0,getdate()), 0)) AS 上個月的最后一天
--d. 本周的星期一
select dateadd(wk, datediff(wk,0,getdate()), 0) AS 本周的星期一
--e. 本季度的第一天
select dateadd(qq, datediff(qq,0,getdate()), 0) AS 本季度的第一天
--f. 本季度的最后一天
select DATEADD(ms,-3,dateadd(qq, datediff(qq,0,getdate())+1, 0)) AS 本季度的最后一天
--g. 本月的第一個星期一
select dateadd(wk, datediff(wk,0,dateadd(dd,6-datepart(day,getdate()),getdate())), 0) AS 本月的第一個星期一
--h. 本年的第一天
select dateadd(yy, datediff(yy,0,getdate()), 0) AS 本年的第一天
--i. 本年的最后一天
select dateadd(ms,-3,dateadd(yy, datediff(yy,0,getdate())+1, 0)) AS 本年的最后一天
--f. 去年的最后一天
select dateadd(ms,-3,dateadd(yy, datediff(yy,0,getdate()), 0)) AS 去年的最后一天