SQL DateTime函数使用示例
文章总结了关于DateTime函数用法与数据转换以及简单的参考手册。
在T-SQL中经常会用到与DateTime相关的函数,现将常用函数做一下汇总,以备忘。
们经常出于某种目的需要使用各种各样的日期格式,当然我们可以使用字符串操作来构造各种日期格式,但是有现成的函数为什么不用呢?
SQL Server中文版的默认的日期字段datetime格式是yyyy-mm-dd Thh:mm:ss.mmm
例如:
select getdate()
2004-09-12 11:06:08.177
整理了一下SQL Server里面可能经常会用到的日期格式转换方法:
SQL DAY() – MONTH( ) – YEAR()
DAY('2008-09-30') = 30
MONTH('2008-09-30') = 9
YEAR('2008-09-30') = 2008
SQL DATEPART()
DATEPART(day, '2008-09-30 11:35:00.1234567') = 30
DATEPART(month, '2008-09-30 11:35:00.1234567') =9
DATEPART(year, '2008-09-30 11:35:00.1234567') = 2008
DATEPART(hour, '2008-09-30 11:35:00.1234567') = 11
DATEPART(minute, '2008-09-30 11:35:00.1234567') = 35
DATEPART(second, '2008-09-30 11:35:00.1234567') = 0
DATEPART(quarter, '2008-09-30 11:35:00.1234567') = 3
DATEPART(dayofyear, '2008-09-30 11:35:00.1234567') =273
DATEPART(week, '2008-09-30 11:35:00.1234567') = 40
DATEPART(weekday, '2008-09-30 11:35:00.1234567') =7
DATEPART(millisecond, '2008-09-30 11:35:00.1234567') =123
DATEPART(microsecond, '2008-09-30 11:35:00.1234567') = 123456
DATEPART(nanosecond, '2008-09-30 11:35:00.1234567') = 123456700
DATEPART(tzoffset, '2008-09-30 11:35:00.1234567 -07:00') = -420
SQL DATEADD()
DATEADD(day, 1, '2008-09-30 11:35:00') = 2008-10-30 01:35:00.000
DATEADD(month, 1, '2008-09-30 11:35:00') = 2008-10-30 11:35:00.000
DATEADD(year, 1, '2008-09-30 11:35:00') = 2009-09-30 11:35:00.000
DATEADD(hour, 1, '2008-09-30 11:35:00') = 2008-09-30 12:35:00.000
DATEADD(minute, 1, '2008-09-30 11:35:00') = 2008-09-30 11:36:00.000
DATEADD(second, 1, '2008-09-30 11:35:00') = 2008-09-30 11:35:01.000
DATEADD(quarter, 1, '2008-09-30 11:35:00') =2008-12-30 11:35:00.000
DATEADD(week, 1, '2008-09-30 11:35:00') = 2008-10-07 11:35:00.000
DATEADD(month, -1, '2008-09-30 11:35:00') = 2008-08-30 11:35:00.000
DATEADD(year, 1.5 , '2008-09-30 11:35:00') = 2009-09-30 11:35:00.000
SQL DATENAME()
DATENAME(day, '2008-09-30 11:35:00.1234567') = 30
DATENAME(month, '2008-09-30 11:35:00.1234567') =September
DATENAME(year, '2008-09-30 11:35:00.1234567') = 2008
DATENAME(hour, '2008-09-30 11:35:00.1234567') = 11
DATENAME(minute, '2008-09-30 11:35:00.1234567') = 35
DATENAME(second, '2008-09-30 11:35:00.1234567') = 0
DATENAME(quarter, '2008-09-30 11:35:00.1234567') = 3
DATENAME(dayofyear, '2008-09-30 11:35:00.1234567') =273
DATENAME(week, '2008-09-30 11:35:00.1234567') = 40
DATENAME(weekday, '2008-09-30 11:35:00.1234567') =Saturday
DATENAME(millisecond, '2008-09-30 11:35:00.1234567') =123
DATENAME(microsecond, '2008-09-30 11:35:00.1234567') = 123456
DATENAME(nanosecond, '2008-09-30 11:35:00.1234567') = 123456700
DATENAME(tzoffset, '2008-09-30 11:35:00.1234567 -07:00') = -07:00
SQL DATEDIFF()
DATEDIFF(day, '2007-12-01' , '2008-09-30') = 303
DATEDIFF(month, '2007-12-01' , '2008-09-30') = 9
DATEDIFF(year, '2007-12-01' , '2008-09-30') = 1
DATEDIFF(hour, '06:46:45' , '11:35:00') = 5
DATEDIFF(minute, '06:46:45' , '11:35:00') = 289
DATEDIFF(second, '06:46:45' , '11:35:00') = 17295
DATEDIFF(quarter, '2007-12-01' , '2008-09-30') = 3
DATEDIFF(week, '2007-12-01' , '2008-09-30') = 44
DATEDIFF(hour, '2008-09-30' , '2007-12-01') = -303
SOME OTHER SQL DATE/TIME RELATED FUNCTIONS
GETDATE()
GETUTCDATE()
SYSDATETIME()
SYSUTCDATETIME()
SYSUTCDATETIMEOFFSET()
DATEADD(datepart,NUMBER,date)
DATEADIFF(datepart, startdate,enddate)
TODATETIMEOFFSET(datetime2,tzoffset)
SWITCHOFFSET(datetimeoffset,tzoffest)
ISDATE(expression)
Adding to this - Calculate no of Days between two dates excluding Weekends.
DECLARE @StartDate DATETIME
DECLARE @EndDate DATETIME
SET @StartDate = '2010/05/01'
SET @EndDate = '2010/05/11'
SELECT (DATEDIFF(dd, @StartDate, @EndDate) + 1)-(DATEDIFF(wk, @StartDate, @EndDate) * 2)
-(CASE WHEN DATENAME(dw, @StartDate) = 'Sunday' THEN 1 ELSE 0 END)-(CASE WHEN DATENAME(dw, @EndDate) = 'Saturday' THEN 1 ELSE 0 END) -- 7
Without century (yy) | With century (yyyy) |
Standard |
Input/Output** |
---|---|---|---|
- | 0 or 100 (*) | Default | mon dd yyyy hh:miAM (or PM) |
1 | 101 | USA | mm/dd/yy |
2 | 102 | ANSI | yy.mm.dd |
3 | 103 | British/French | dd/mm/yy |
4 | 104 | German | dd.mm.yy |
5 | 105 | Italian | dd-mm-yy |
6 | 106 | - | dd mon yy |
7 | 107 | - | Mon dd, yy |
8 | 108 | - | hh:mm:ss |
- | 9 or 109 (*) | Default + milliseconds | mon dd yyyy hh:mi:ss:mmmAM (or PM) |
10 | 110 | USA | mm-dd-yy |
11 | 111 | JAPAN | yy/mm/dd |
12 | 112 | ISO | yymmdd |
- | 13 or 113 (*) | Europe default + milliseconds | dd mon yyyy hh:mm:ss:mmm(24h) |
14 | 114 | - | hh:mi:ss:mmm(24h) |
- | 20 or 120 (*) | ODBC canonical | yyyy-mm-dd hh:mi:ss(24h) |
- | 21 or 121 (*) | ODBC canonical (with milliseconds) | yyyy-mm-dd hh:mi:ss.mmm(24h) |
- | 126(***) | ISO8601 | yyyy-mm-dd Thh:mm:ss:mmm(no spaces) |
- | 130* | Kuwaiti | dd mon yyyy hh:mi:ss:mmmAM |
- | 131* | Kuwaiti | dd/mm/yy hh:mi:ss:mmmAM |
举例如下:
select CONVERT(varchar, getdate(), 120 )
2004-09-12 11:06:08
select replace(replace(replace(CONVERT(varchar, getdate(), 120 ),'-',''),' ',''),':','')
20040912110608
select CONVERT(varchar(12) , getdate(), 111 )
2004/09/12
select CONVERT(varchar(12) , getdate(), 112 )
20040912
select CONVERT(varchar(12) , getdate(), 102 )
2004.09.12
select CONVERT(varchar(12) , getdate(), 101 )
09/12/2004
select CONVERT(varchar(12) , getdate(), 103 )
12/09/2004
select CONVERT(varchar(12) , getdate(), 104 )
12.09.2004
select CONVERT(varchar(12) , getdate(), 105 )
12-09-2004
select CONVERT(varchar(12) , getdate(), 106 )
12 09 2004
select CONVERT(varchar(12) , getdate(), 107 )
09 12, 2004
select CONVERT(varchar(12) , getdate(), 108 )
11:06:08
select CONVERT(varchar(12) , getdate(), 109 )
09 12 2004 1
select CONVERT(varchar(12) , getdate(), 110 )
09-12-2004
select CONVERT(varchar(12) , getdate(), 113 )
12 09 2004 1
select CONVERT(varchar(12) , getdate(), 114 )
11:06:08.177

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

HQL和SQL在Hibernate框架中進行比較:HQL(1.物件導向語法,2.資料庫無關的查詢,3.類型安全),而SQL直接操作資料庫(1.與資料庫無關的標準,2.可執行複雜查詢和資料操作)。

《OracleSQL中除法運算的用法》在OracleSQL中,除法運算是常見的數學運算之一。在資料查詢和處理過程中,除法運算可以幫助我們計算欄位之間的比例或得出特定數值的邏輯關係。本文將介紹OracleSQL中除法運算的用法,並提供具體的程式碼範例。一、OracleSQL中除法運算的兩種方式在OracleSQL中,除法運算可以用兩種不同的方式來進行

Oracle和DB2是兩個常用的關聯式資料庫管理系統,它們都有自己獨特的SQL語法和特性。本文將針對Oracle和DB2的SQL語法進行比較與區別,並提供具體的程式碼範例。資料庫連接在Oracle中,使用以下語句連接資料庫:CONNECTusername/password@database而在DB2中,連接資料庫的語句如下:CONNECTTOdataba

MyBatis動態SQL標籤解讀:Set標籤用法詳解MyBatis是一個優秀的持久層框架,它提供了豐富的動態SQL標籤,可以靈活地建構資料庫操作語句。其中,Set標籤是用來產生UPDATE語句中SET子句的標籤,在更新作業中非常常用。本文將詳細解讀MyBatis中Set標籤的用法,以及透過具體的程式碼範例來示範其功能。什麼是Set標籤Set標籤用於MyBati

SQL中的Identity是什麼,需要具體程式碼範例在SQL中,Identity是一種用於產生自增數字的特殊資料類型,它常用於唯一識別表中的每一行資料。 Identity欄位通常與主鍵列搭配使用,可確保每筆記錄都有獨一無二的識別碼。本文將詳細介紹Identity的使用方式以及一些實際的程式碼範例。 Identity的基本使用方式在建立表格時,可以使用Identit

解決方法:1、檢查登入使用者是否具有足夠的權限來存取或操作該資料庫,確保該使用者俱有正確的權限;2、檢查SQL Server服務的帳戶是否具有存取指定檔案或資料夾的權限,確保該帳戶具有足夠的權限來讀取和寫入該文件或資料夾;3、檢查指定的資料庫文件是否已被其他進程打開或鎖定,嘗試關閉或釋放該文件,並重新運行查詢;4、嘗試以管理員身份運行Management Studio等等。

資料庫技術大比拼:Oracle和SQL的差別有哪些?在資料庫領域中,Oracle和SQLServer是兩種備受推崇的關聯式資料庫管理系統。儘管它們都屬於關係型資料庫的範疇,但兩者之間存在著許多不同之處。在本文中,我們將深入探討Oracle和SQLServer之間的區別,以及它們在實際應用中的特徵和優勢。首先,Oracle和SQLServer在語法方面存

SQL中MONTHS_BETWEEN是一個常見的函數,用於計算兩個日期之間的月份差。它的使用方法取決於特定的資料庫管理系統。
