不一樣的 SQL Server 日期格式化

不一樣的 SQL Server 日期格式化

Intro

最近統(tǒng)計(jì)一些數(shù)據(jù),需要按天/按小時(shí)/按分鐘來統(tǒng)計(jì),涉及到一些日期的格式化,網(wǎng)上看了一些文章大部分都是使用 CONVERT 來轉(zhuǎn)換的,SQL Server 從 2012 開始增加了 FORMAT 方法,可以使用 FORMAT 來格式化日期,更標(biāo)準(zhǔn)化,更具可定制性,而且和 C# 里的日期格式化差不多,可以直接把 C# 里日期的格式直接拿過來用

FORMAT 介紹

FORMAT 適用于數(shù)字和日期類型數(shù)據(jù)的格式化,其他數(shù)據(jù)類型不支持,其他類型數(shù)據(jù)轉(zhuǎn)換請(qǐng)使用 CONVERTCAST 去轉(zhuǎn)換。

語法

FORMAT ( value, format [, culture ] )

  • value

    支持格式化的數(shù)據(jù)類型的表達(dá)式。
    下表列出了 value 參數(shù)可接受的數(shù)據(jù)類型,其中還有相關(guān)的 .NET Framework 映射等效類型。

    類別 | 類型 | .NET 類型

    數(shù)字 | BIGINT | Int64
    數(shù)字 | INT | Int32
    數(shù)字 | SMALLINT | Int16
    數(shù)字 | TINYINT | Byte
    數(shù)字 | Decimal | Decimal
    數(shù)字 | NUMERIC | Decimal
    數(shù)字 | FLOAT | double
    數(shù)字 | REAL | Single
    數(shù)字 | SMALLMONEY | Decimal
    數(shù)字 | money | Decimal
    日期和時(shí)間 | date | DateTime
    日期和時(shí)間 | time | TimeSpan
    日期和時(shí)間 | DATETIME | DateTime
    日期和時(shí)間 | smalldatetime | DateTime
    日期和時(shí)間 | datetime2 | DateTime
    日期和時(shí)間 | datetimeoffset | DateTimeOffset

  • format
    nvarchar 格式模式。
    format 參數(shù)必須包含一個(gè)有效的 .NET Framework 格式字符串,要么作為標(biāo)準(zhǔn)格式字符串(例如,“C”或“D”),要么作為日期值和數(shù)值的自定義字符模式(例如,“MMMM DD, yyyy (dddd)”)。 不支持組合格式。 有關(guān)這些格式模式的完整解釋,請(qǐng)查閱有關(guān)常規(guī)字符串格式、自定義日期和時(shí)間格式以及自定義數(shù)字格式的 .NET Framework 文檔

  • culture
    指定區(qū)域性的可選 nvarchar 參數(shù)。
    如果未提供 culture 參數(shù),則使用當(dāng)前會(huì)話的語言。 可以使用 SET LANGUAGE 語句隱式或顯式設(shè)置此語言。 culture 接受 .NET Framework 支持的任何區(qū)域性作為參數(shù);它不局限于 SQL Server 顯式支持的語言。 如果 culture 參數(shù)無效,F(xiàn)ORMAT 將引發(fā)錯(cuò)誤。

返回值類型是 NVARCHAR 或者 NULL

示例

Query | Sample output

SELECT FORMAT (getdate(), 'dd/MM/yyyy ') | 21/03/2018
SELECT FORMAT (getdate(), 'dd/MM/yyyy, hh:mm:ss ') | 21/03/2018, 11:36:14
SELECT FORMAT (getdate(), 'dddd, MMMM, yyyy') | Wednesday, March, 2018
SELECT FORMAT (getdate(), 'MMM dd yyyy') | Mar 21 2018
SELECT FORMAT (getdate(), 'MM.dd.yy') | 03.21.18
SELECT FORMAT (getdate(), 'MM-dd-yy') | 03-21-18
SELECT FORMAT (getdate(), 'hh:mm:ss tt') | 11:36:14 AM
SELECT FORMAT (getdate(), 'd','us') | 03/21/2018

和 C# 代碼里的格式化格式一致,可以直接使用 C# 里的日期時(shí)間格式,數(shù)字格式

SELECT FORMAT (getdate(), 'yyyyMMddHHmmss') >> 20190218033523
SELECT FORMAT (getdate(), 'yyyy-MM-dd HH:mm:ss')  >>    2019-02-18 03:35:23
DECLARE @d DATETIME = GETDATE();  
SELECT FORMAT( @d, 'dd/MM/yyyy', 'en-US' ) AS 'DateTime Result'  
       ,FORMAT(123456789,'###-##-####') AS 'Custom Number Result';  

output:

DateTime Result  Custom Number Result  
--------------   --------------------  
27/09/2012       123-45-6789  
  
(1 row(s) affected)  

Reference

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • pyspark.sql模塊 模塊上下文 Spark SQL和DataFrames的重要類: pyspark.sql...
    mpro閱讀 9,920評(píng)論 0 13
  • 執(zhí)行下面格式化時(shí)間和日期的T-SQL腳本,在數(shù)據(jù)庫查詢分析器中示范了SQL Server中的大多數(shù)可用的時(shí)間數(shù)據(jù)格...
    安易學(xué)車閱讀 413評(píng)論 0 0
  • 轉(zhuǎn)自這里 sql server2000中使用convert來取得datetime數(shù)據(jù)類型樣式(全) 日期數(shù)據(jù)格式的...
    腿毛褲閱讀 3,485評(píng)論 0 0
  • sql server2000中使用convert來取得datetime數(shù)據(jù)類型樣式(全)日期數(shù)據(jù)格式的處理,兩個(gè)示...
    飛天豬Pony閱讀 2,116評(píng)論 0 0
  • SQL 語法大全 標(biāo)簽(空格分隔): SQL DB2 SQL語法大全 SQL SELECT SQL SELECT ...
    lumicinta閱讀 13,444評(píng)論 3 196

友情鏈接更多精彩內(nèi)容