SQL中DATEADD和DATEDIFF的使用方法
DATEADD函式計算一個日期通過給時間間隔加減來獲得一個新的日期,DATEDIFF函式計算兩個日期之間的小時、天、周、月、年等時間間隔總數。
1、SQL Server DATEADD() 函式
定義和用法
DATEADD() 函式在日期中新增或減去指定的時間間隔。
語法
DATEADD(datepart,number,date)
date 引數是合法的日期表示式。number 是您希望新增的間隔數;對於未來的時間,此數是正數,對於過去的時間,此數是負數。
datepart 引數可以是下列的值:
datepart | 縮寫 |
---|---|
年 | yy, yyyy |
季度 | qq, q |
月 | mm, m |
年中的日 | dy, y |
日 | dd, d |
周 | wk, ww |
星期 | dw, w |
小時 | hh |
分鐘 | mi, n |
秒 | ss, s |
毫秒 | ms |
微妙 | mcs |
納秒 | ns |
例項
假設我們有下面這個 "Orders" 表:
OrderId | ProductName | OrderDate |
---|---|---|
1 | 'Computer' | 2008-12-29 16:25:46.635 |
現在,我們希望向 "OrderDate" 新增 2 天,這樣就可以找到付款日期。
我們使用如下 SELECT 語句:
SELECT OrderId,DATEADD(day,2,OrderDate)
AS OrderPayDate
FROM Orders
結果:
OrderId | OrderPayDate |
---|---|
1 | 2008-12-31 16:25:46.635 |
2、SQL Server DATEDIFF() 函式
定義和用法
DATEDIFF() 函式返回兩個日期之間的天數。
語法
DATEDIFF(datepart,startdate,enddate)
startdate 和 enddate 引數是合法的日期表示式。
datepart 引數可以是下列的值:
datepart | 縮寫 |
---|---|
年 | yy, yyyy |
季度 | qq, q |
月 | mm, m |
年中的日 | dy, y |
日 | dd, d |
周 | wk, ww |
星期 | dw, w |
小時 | hh |
分鐘 | mi, n |
秒 | ss, s |
毫秒 | ms |
微妙 | mcs |
納秒 | ns |
例項
例子 1
使用如下 SELECT 語句:
SELECT DATEDIFF(day,'2008-12-29','2008-12-30') AS DiffDate
結果:
DiffDate |
---|
1 |
例子 2
使用如下 SELECT 語句:
SELECT DATEDIFF(day,'2008-12-30','2008-12-29') AS DiffDate
結果:
DiffDate |
---|
-1 |
本月的第一天:
- Select dateadd(ms,0,DATEADD(mm, DATEDIFF(mm,0,getdate()), 0)) as 時間
本月的最後一天:
- Select dateadd(ms,-3,DATEADD(mm, DATEDIFF(m,0,getdate())+1, 0))
上個月的最後一天:
- Select dateadd(ms,-3,DATEADD(mm, DATEDIFF(mm,0,getdate()), 0)) as 時間
去年的最後一天:
- Select dateadd(ms,-3,DATEADD(yy, DATEDIFF(yy,0,getdate()), 0))
- Select dateadd(ms,-3,DATEADD(yy, DATEDIFF(yy,0,getdate())+1, 0))
2016-01-21的12個月前的那個月的第一天:
- Select dateadd(mm,-12,DATEADD(mm, DATEDIFF(mm,0,'2016-01-21'), 0)) as 時間
一年中指定周的第一天:
- DECLARE @本年第一天 datetime,@本年第一天是星期幾 int,@Week int
- set @本年第一天=DATEADD(ms,0,DATEADD(yy, DATEDIFF(yy,0,GETDATE()), 0))
- set @本年第一天是星期幾=DATEPART(dw,DATEADD(ms,0,DATEADD(yy, DATEDIFF(yy,0,GETDATE()), 0)))
- set @Week=1--今年第一週
- select DATEADD(day,(@Week-1)*7-@本年第一天是星期幾+2,@本年第一天)
轉載:https://blog.csdn.net/Gordennizaicunzai/article/details/50710130
相關文章
- SQL Server日期計算(使用DATEADD和DATEDIFF函式)SQLServer函式
- SQL Server中的日期和時間:DATEADD()SQLServer
- Mysql與Sql Server DATEDIFF函式MySqlServer函式
- sql中limit使用方法SQLMIT
- PL/SQL開發中動態SQL的使用方法SQL
- sql server datediff函式引發的效能問題SQLServer函式
- SQL datediff用法( 返回兩個日期之間的間隔)SQL
- js操作日期(函式,js版的dateAdd與dateDiff,四捨五入(round()方法)並保留小數點後N位的函式)JS函式
- SQL Server資料庫之datepart和datediff應用查詢當天上午和下午的資料SQLServer資料庫
- SQL遊標原理和使用方法(轉)SQL
- SQL SERVER中游標原理和使用方法SQLServer
- postgresql和mysql中的limit使用方法MySqlMIT
- SQL SERVER資料庫datediff函式引發的效能問題SQLServer資料庫函式
- FTP 中ascii 和bin 的區別和使用方法FTPASCII
- Python中類的建立和使用方法Python
- Unfolder中的補丁和元素使用方法
- AIX中YUM庫的配置和使用方法AI
- c++中new和delete的使用方法C++delete
- SQL*Loader的使用方法SQL
- SQL Case when 的使用方法SQL
- SQL LOADER的使用方法SQL
- SQL CONVERT的使用方法SQL
- 資料庫中Date型別的計算 DATEDIFF() 函式資料庫型別函式
- C#中的ref和out的意義和使用方法C#
- 簡單介紹SQL中ISNULL函式使用方法SQLNull函式
- awrsqrpt.sql使用方法,功能持續完善中SQL
- c++中getopt和getopt_long的使用方法C++
- SQL*Loader使用方法SQL
- Flashback [Oracle SQL] 使用方法OracleSQL
- SQL中where和on的區別SQL
- SQL SERVER中的頁和區SQLServer
- jquery 中 $.map 的使用方法jQuery
- YogaKit中 position 的使用方法
- react中hooks的使用方法ReactHook
- Oracle中“HINT”的使用方法Oracle
- Oracle中sequence的使用方法Oracle
- 簡單的方法掌握JS中slice,splice和split的使用方法JS
- Django REST framework中認證和許可權的使用方法DjangoRESTFramework