Sql Server 日期函式
1.一個月第一天的
複製 儲存Select DATEADD(mm, DATEDIFF(mm,0,getdate()), 0)
2.本週的星期一
複製 儲存Select DATEADD(wk, DATEDIFF(wk,0,getdate()), 0)
3.一年的第一天
複製 儲存Select DATEADD(yy, DATEDIFF(yy,0,getdate()), 0)
4.季度的第一天
複製 儲存Select DATEADD(qq, DATEDIFF(qq,0,getdate()), 0)
5.當天的半夜
複製 儲存Select DATEADD(dd, DATEDIFF(dd,0,getdate()), 0)
6.上個月的最後一天
複製 儲存Select dateadd(ms,-3,DATEADD(mm, DATEDIFF(mm,0,getdate()), 0))
7.去年的最後一天
複製 儲存Select dateadd(ms,-3,DATEADD(yy, DATEDIFF(yy,0,getdate()), 0))
8.本月的最後一天
複製 儲存Select dateadd(ms,-3,DATEADD(mm, DATEDIFF(m,0,getdate())+1, 0))
9.本年的最後一天
複製 儲存Select dateadd(ms,-3,DATEADD(yy, DATEDIFF(yy,0,getdate())+1, 0))
10.本月的第一個星期一
複製 儲存select DATEADD(wk, DATEDIFF(wk,0,dateadd(dd,6-datepart(day,getdate()),getdate())), 0)
返回當前日期和時間
通過函式GETDATE(),你可以獲得當前的日期和時間。函式GETDATE()可以用來作為DATEDIME型欄位的預設值。這對插入記錄時保
存當時的時間是有用的。要建立一個表,其中的記錄包含有當前的日期和時間,可以新增一個DATETIME型欄位,指定其預設值為函式GETDATE()的
返回值,就象這樣:
複製 儲存Create TABLE site_log (
username VARCHAR(40),
以下是具體函式明細:
在向指定日期加上一段時間的基礎上,返回新的 datetime 值。
語法
DATEADD ( interval , number, date )
設定 | 描述 |
yyyy | 年Year |
q | 季Quarter |
m | 月Month |
y | 一年的日數 |
d | 日Day |
w | 一週的日數 |
ww | 周Weekday |
h | 時Hour |
n | 分鐘Minute |
s | 秒Second |
number :數值表示式,設定一個日期所加上的一段期間,可為正值或負值,正值表示加(結果為 date 以後的日期),負值表示減(結果為 date 以前的日期)。
date :待加減的日期。
例子: DateAdd ( "m" , 1 , "31-Jan-98")
結果: 28-Feb-98
說明:將日期 31-Jan-98 加上一個月,結果為 28-Feb-98 而非 31-Fe-98 。
例子: DateAdd ( "d" , 20 , "30-Jan-99")
結果: 1999/2/9
說明:將一個日期 30-Jan-99 加上 20 天后的日期。
DATEDIFF
返回跨兩個指定日期的日期和時間邊界數。
語法
DATEDIFF ( interval , startdate , enddate )
interval :設定兩個日期之間的期間計算之單位。譬如 interval ="m" 表示計算的單位為月。 interval 的設定值如:
日期部分 | 縮寫 |
---|---|
year | yy, yyyy |
quarter | qq, q |
Month | mm, m |
dayofyear | dy, y |
Day | dd, d |
Week | wk, ww |
Hour | hh,h |
minute | mi, n |
second | ss, s |
millisecond | ms |
startdate ,enddate :計算期間的兩個日期表示式,若 enddate 較早,則兩個日期之間的期間結果為正值;若 startdate 較早, 則結果為負值。
FW :設定每週第一天為星期幾, 若未設定表示為星期天。 >FW 的設定值如下:
0 使用 >API 的設定值。
1 星期天
2 星期一
3 星期二
4 星期三
5 星期四
6 星期五
7 星期六
FY :設定一年的第一週, 若未設定則表示一月一日那一週為一年的第一週。 >FY 的設定值如下:
0 使用 >API 的設定值。
1 一月一日那一週為一年的第一週
2 至少包括四天的第一週為一年的第一週
3 包括七天的第一週為一年的第一週
例子: DateDiff ("d","25-Mar-99 ","30-Jun-99 ")
結果: 97
說明:顯示兩個日期之間的期間為 97 天
GETDATE
GETDATE ( )
返回型別datetime
註釋日期函式可用在 SELECT 語句的選擇列表或用在查詢的 WHERE 子句中。
在設計報表時,GETDATE 函式可用於在每次生成報表時列印當前日期和時間。GETDATE 對於跟蹤活動也很有用,諸如記錄事務在某一帳戶上發生的時間。
示例 A. 用 GET DATE 返回當前日期和時間下面的示例得出當前系統日期和時間:
SELECT GETDATE()
GO
下面是結果集:
-------------------------B. 在 CREATE TABLE 語句中使用 GETDATE
July 29 1998 2:50 PM
(1 row(s) affected)
下面的示例建立 employees 表並用 GETDATE 給出員工僱傭時間的預設值。
USE pubs
GO
CREATE TABLE employees
(
emp_id char(11) NOT NULL,
emp_lname varchar(40) NOT NULL,
emp_fname varchar(20) NOT NULL,
emp_hire_date datetime DEFAULT GETDATE(),
emp_mgr varchar(30)
)
GO
DATENAME
返回代表指定日期的指定日期部分的字串。
語法
DATENAME ( datepart , date )
datepart
是指定應返回的日期部分的引數。下表列出了 Microsoft® SQL Server™ 識別的日期部分和縮寫。
日期部分 | 縮寫 |
---|---|
year | yy, yyyy |
quarter | qq, q |
month | mm, m |
dayofyear | dy, y |
day | dd, d |
week | wk, ww |
weekday | dw |
Hour | hh |
minute | mi, n |
second | ss, s |
millisecond | ms |
weekday (dw) 日期部分返回星期幾(星期天、星期一等)。
nvarchar
註釋SQL Server 自動在字元和 datetime 值間按需要進行轉換,例如,當將字元值與 datetime 值進行比較時。
示例此示例從 GETDATE 返回的日期中提取月份名。
SELECT DATENAME(month, getdate()) AS 'Month Name'
下面是結果集:
Month Name
------------------------------
February
DAY ( date )
引數date
型別為 datetime 或 smalldatetime 的表示式。
返回型別int
註釋此函式等價於 DATEPART(dd, date)。
示例此示例返回從日期 03/12/1998 後的天數。
SELECT DAY('03/12/1998') AS 'Day Number'
GO
下面是結果集:
Day Number
------------
12
在此示例中,以數字表示日期。注意:Microsoft® SQL Server™ 將 0 解釋為 01/01/1900。
SELECT MONTH(0), DAY(0), YEAR(0)
下面是結果集。
----- ------ ------
1 1 1900
例子: Day(" 12/1/1999 ")
結果: 1
MONTH
返回代表指定日期月份的整數。
語法MONTH ( date )
引數date
返回 datetime 或 smalldatetime 值或日期格式字串的表示式。僅對 1753 年 1 月 1 日後的日期使用 datetime 資料型別。
返回型別int
註釋MONTH 等價於 DATEPART(mm, date)。
將 datetime 值包含在引號中。對於早期日期,可將其儲存為字元資料。
Microsoft® SQL Server™ 認可各種日期樣式。
示例下面的示例從日期 03/12/1998 中返回月份數。
SELECT "Month Number" = MONTH('03/12/1998')
GO
下面是結果集:
Month Number
------------
3
下例用數字指定日期。注意:SQL Server 將 0 解釋為 01/01/1900。
SELECT MONTH(0), DAY(0), YEAR(0)
下面是結果集。
----- ------ ------
1 1 1900
YEAR
返回表示指定日期中的年份的整數。
語法YEAR ( date )
引數date
datetime 或 smalldatetime 型別的表示式。
返回型別int
註釋此函式等價於 DATEPART(yy, date)。
示例下例從日期 03/12/1998 中返回年份數。
SELECT "Year Number" = YEAR('03/12/1998')
GO
下面是結果集:
Year Number
------------
1998
下例用數字指定日期。注意:Microsoft® SQL Server™ 資料庫將 0 解釋為 1900 年 1 月 1 日。
SELECT MONTH(0), DAY(0), YEAR(0)
下面是結果集:
----- ------ ------
1 1 1900
DATEPART
返回代表指定日期的指定日期部分的整數。
語法DATEPART ( datepart , date )
引數datepart
是指定應返回的日期部分的引數。下表列出了 Microsoft® SQL Server™ 識別的日期部分和縮寫。
日期部分 | 縮寫 |
---|---|
year | yy, yyyy |
quarter | qq, q |
month | mm, m |
dayofyear | dy, y |
day | dd, d |
week | wk, ww |
weekday | dw |
Hour | hh |
minute | mi, n |
second | ss, s |
millisecond | ms |
week (wk, ww) 日期部分反映對 SET DATEFIRST 作的更改。任何一年的 1 月 1 日定義了 week 日期部分的開始數字,例如:DATEPART(wk, 'Jan 1, xxxx') = 1,此處 xxxx 代表任一年。
weekday (dw) 日期部分返回對應於星期中的某天的數,例如:Sunday = 1、Saturday = 7。weekday 日期部分產生的數取決於 SET DATEFIRST 設定的值,此命令設定星期中的第一天。
date
是返回 datetime 或 smalldatetime 值或日期格式字串的表示式。對 1753 年 1 月 1 日之後的日期用datetime 資料型別。更早的日期儲存為字元資料。當輸入 datetime 值時,始終將其放入引號中。因為 smalldatetime 只精確到分鐘,所以當用 smalldatetime 值時,秒和毫秒總是 0。
如果只指定年份的最後兩位數字,則小於或等於"兩位數年份截止期"配置選項的值的最後兩位數字的數字所在世紀與截止年所在世紀相同。大於該選項的值的最後兩位數字的數字所在世紀為截止年所在世紀的前一個世紀。例如,如果 two digit year cutoff 為 2049 (預設),則 49 被解釋為 2049,2050 被解釋為 1950。為避免模糊,請使用四位數的年份。
返回型別
int
註釋DAY、MONTH、和 YEAR 函式分別是 DATEPART(dd, date)、DATEPART(mm, date)、和 DATEPART(yy, date) 的同義詞。
示例GETDATE 函式返回當前日期;然而,比較時並不總是需要完整的日期資訊(通常只是對日期的一部分進行比較)。此示例顯示 GETDATE 及 DATEPART 的輸出。
SELECT GETDATE() AS 'Current Date'
GO
下面是結果集:
Current Date
---------------------------
Feb 18 1998 11:46PM
SELECT DATEPART(month, GETDATE()) AS 'Month Number'
GO
下面是結果集:
Month Number
------------
2
此示例假設日期是 5 月 29 日。
SELECT DATEPART(month, GETDATE())
GO
下面是結果集:
-----------
5
(1 row(s) affected)
在此示例中,以數字表示日期。注意:SQL Server 將 0 解釋為 01/01/1900。
SELECT DATEPART(m, 0), DATEPART(d, 0), DATEPART(yy, 0)
下面是結果集:
----- ------ ------
1 1 1900
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/16436858/viewspace-628256/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- SQL SERVER 日期和時間資料型別及函式 (Transact-SQL)SQLServer資料型別函式
- SQL Server 2016 函式:CASTSQLServer函式AST
- SQL Server常用函式整理SQLServer函式
- sql server日期格式 sqlserver的日期格式SQLServer
- SQL server儲存過程函式SQLServer儲存過程函式
- 【SQL Server】常見系統函式SQLServer函式
- Clickhouse SQL日期處理函式及案例分享SQL函式
- SQL 獲取SQL Server中兩個日期之間的所有日期SQLServer
- SQL SERVER 日期格式化、日期和字串轉換SQLServer字串
- sql server 資料型別轉換函式SQLServer資料型別函式
- SQL 獲取SQL Server中日期最近7天之間的所有日期SQLServer
- sql server對於日期的處理SQLServer
- SQL Server各種日期計算方法SQLServer
- MySQL(四)日期函式 NULL函式 字串函式MySql函式Null字串
- 大資料開發-Hive-常用日期函式&&日期連續題sql套路大資料Hive函式SQL
- SQL Server建立使用者函式與應用SQLServer函式
- SQL Server最佳化標量函式改寫內聯表值函式SQLServer函式
- SQL Server中的日期和時間:DATEADD()SQLServer
- SQL Server 語句日期格式查詢方法SQLServer
- SQLSERVER日期函式(zt)SQLServer函式
- SQL Server資料庫————模糊查詢和聚合函式SQLServer資料庫函式
- SQL Server中row_number函式的常見用法SQLServer函式
- 不一樣的 SQL Server 日期格式化SQLServer
- SQL Server日期資料型別DATE的使用SQLServer資料型別
- Oracle OCP(03):字元函式、數字函式和日期函式Oracle字元函式
- 【SQL】19 SQL函式SQL函式
- Clickhouse 時間日期函式函式
- Haskell 中的日期函式Haskell函式
- mysql日期函式總結MySql函式
- MYSQL事件使用 日期函式MySql事件函式
- MySQL函式大全(字串函式,數學函式,日期函式,系統級函式,聚合函式)MySql函式字串
- sql函式SQL函式
- SQL-函式 - 聚合函式SQL函式
- oracle 10g函式大全–日期型函式Oracle 10g函式
- Serverless 解惑——函式計算如何訪問 SQL Server 資料庫Server函式SQL資料庫
- SQL SERVER資料庫datediff函式引發的效能問題SQLServer資料庫函式
- oracle interval日期函式的bug!Oracle函式
- SPL 的日期時間函式函式
- Sql 中的 left 函式、right 函式SQL函式