ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

不一样 SQL Server 日期格式化

2019-02-18 11:49:24  阅读:306  来源: 互联网

标签:格式化 FORMAT sql Server 日期 SQL 格式 SELECT getdate


不一样的 SQL Server 日期格式化

Intro

最近统计一些数据,需要按天/按小时/按分钟来统计,涉及到一些日期的格式化,网上看了一些文章大部分都是使用 CONVERT 来转换的,SQL Server 从 2012 开始增加了 FORMAT 方法,可以使用 FORMAT 来格式化日期,更标准化,更具可定制性,而且和 C# 里的日期格式化差不多,可以直接把 C# 里日期的格式直接拿过来用

FORMAT 介绍

FORMAT 适用于数字和日期类型数据的格式化,其他数据类型不支持,其他类型数据转换请使用 CONVERTCAST 去转换。

语法

FORMAT ( value, format [, culture ] )

  • value

    支持格式化的数据类型的表达式。
    下表列出了 value 参数可接受的数据类型,其中还有相关的 .NET Framework 映射等效类型。

    类别 | 类型 | .NET 类型
    -------------------------------
    数字 | BIGINT | Int64
    数字 | INT | Int32
    数字 | SMALLINT | Int16
    数字 | TINYINT | Byte
    数字 | Decimal | Decimal
    数字 | NUMERIC | Decimal
    数字 | FLOAT | double
    数字 | REAL | Single
    数字 | SMALLMONEY | Decimal
    数字 | money | Decimal
    日期和时间 | date | DateTime
    日期和时间 | time | TimeSpan
    日期和时间 | DATETIME | DateTime
    日期和时间 | smalldatetime | DateTime
    日期和时间 | datetime2 | DateTime
    日期和时间 | datetimeoffset | DateTimeOffset

  • format
    nvarchar 格式模式。
    format 参数必须包含一个有效的 .NET Framework 格式字符串,要么作为标准格式字符串(例如,“C”或“D”),要么作为日期值和数值的自定义字符模式(例如,“MMMM DD, yyyy (dddd)”)。 不支持组合格式。 有关这些格式模式的完整解释,请查阅有关常规字符串格式、自定义日期和时间格式以及自定义数字格式的 .NET Framework 文档

  • culture
    指定区域性的可选 nvarchar 参数。
    如果未提供 culture 参数,则使用当前会话的语言。 可以使用 SET LANGUAGE 语句隐式或显式设置此语言。 culture 接受 .NET Framework 支持的任何区域性作为参数;它不局限于 SQL Server 显式支持的语言。 如果 culture 参数无效,FORMAT 将引发错误。

返回值类型是 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# 里的日期时间格式,数字格式

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

标签:格式化,FORMAT,sql,Server,日期,SQL,格式,SELECT,getdate
来源: https://www.cnblogs.com/weihanli/p/10394665.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有