不一样的 SQL Server 日期格式化
不一样的 SQL Server 日期格式化
Intro
最近统计一些数据,需要按天/按小时/按分钟来统计,涉及到一些日期的格式化,网上看了一些文章大部分都是使用 CONVERT 来转换的,SQL Server 从 2012 开始增加了 FORMAT 方法,可以使用 FORMAT 来格式化日期,更标准化,更具可定制性,而且和 C# 里的日期格式化差不多,可以直接把 C# 里日期的格式直接拿过来用
FORMAT 介绍
FORMAT 适用于数字和日期类型数据的格式化,其他数据类型不支持,其他类型数据转换请使用 CONVERT 和 CAST 去转换。
语法
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 | DateTimeOffsetformat
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
- https://docs.microsoft.com/en-us/sql/t-sql/functions/format-transact-sql?view=sql-server-2017
- https://docs.microsoft.com/ZH-CN/sql/t-sql/functions/format-transact-sql?view=sql-server-2017
- https://docs.microsoft.com/zh-cn/dotnet/standard/base-types/formatting-types
- https://www.mssqltips.com/sqlservertip/1145/date-and-time-conversions-using-sql-server/
- https://www.mssqltips.com/sqlservertip/2655/format-sql-server-dates-with-format-function/
- http://www.cnblogs.com/firstdream/p/8074219.html
不一样的 SQL Server 日期格式化的更多相关文章
- Sql Server 日期格式化函数
Sql Server 中一个非常强大的日期格式化函数Select CONVERT(varchar(100), GETDATE(), 0): 05 16 2006 10:57AMSelect CONVE ...
- 【转】SQL SERVER 日期格式化
0 或 100 (*) 默认值 mon dd yyyy hh:miAM(或 PM) 1 101 美国 mm/dd/yyyy ...
- SQL Server日期格式化
0 或 100 (*) 默认值 mon dd yyyy hh:miAM(或 PM) 1 101 美国 mm/dd/yyyy ...
- 常用SQL Server日期格式化
Select CONVERT(varchar(100), GETDATE(), 8): 10:57:46 Select CONVERT(varchar(100), GETDATE(), 24): 10 ...
- Sql Server 日期格式化
select CONVERT(date,myDtae,23),ID from myFirstTable; http://www.cnblogs.com/hantianwei/archive/2009/ ...
- Sql Server 日期格式化函數 Convert
Select CONVERT(varchar(100), GETDATE(), 0): 05 16 2015 10:57AM Select CONVERT(varchar(100), GETDATE( ...
- SQL Server 日期格式化输出
转自:http://hi.baidu.com/%BC%D1%C0%D6%B1%C8%BA%A3/blog/item/fdaf6c9525adfa0f7af480ec.html T-SQL Script ...
- sql server日期时间转字符串
一.sql server日期时间函数Sql Server中的日期与时间函数 1. 当前系统日期.时间 select getdate() 2. dateadd 在向指定日期加上一段时间的基 ...
- sql server 日期
在SQL Server数据库中,SQL Server日期时间格式转换字符串可以改变SQL Server日期和时间的格式,是每个SQL数据库用户都应该掌握的.本文我们主要就介绍一下SQL Server日 ...
随机推荐
- SQL语句的CRUD
一.基础 .说明:创建数据库 CREATE DATABASE database-name .说明:删除数据库 drop database dbname .说明:备份sql server --- 创建 ...
- java中Iterator和ListIterator的区别与联系
首先,为什么需要使用迭代器Iterator,原有的for循环和for each不能满足需求吗? 那是因为Iterator模式是用于遍历集合类的标准访问方法.它可以把访问逻辑从不同类型的集合类中抽象出来 ...
- VirtualBox报错:不能为虚拟电脑XXX打开一个新任务
报错产生的背景 今天在这里下载了一个用于VirtualBox的Kali Linux虚拟机文件(使用VirtualBox可以直接打开使用,不用执行安装过程).但是将该文件导入到VirtualBox中之后 ...
- 玩转Web之html+CSS(一)---论坛首页表格的实现
转载请说明出处,小编博客地址:http://blog.csdn.net/u012116457 最近本来想去写一个类似论坛的页面,论坛首页一般都需要一个表格去显示数据,自己简单的写了一下,先上一张图 c ...
- Python常用算法(一)
1.选择排序 不断找到最小的(找最大的也是可以的) 首先拿到第一个,然后发现比它小的,记住下标.循环一轮,找到最小的数的位置 和 最左边的数交换位置 然后从第二个开始....和第二个交换位置,循环最后 ...
- ResultSet,RowSet,OracleCachedRowSet和RowSetMetaData区别及联系
在java主要涉及到数据开发的过程中,我们会和数据库打交道很多,其中使用了数据集比如ResultSet和RowSet,经常使用两种,还有其它的一些,那么这两种的主要区别是什么呢?我们先来看它们引入的方 ...
- 在MFC中怎么获得Excel文档中已经使用了的行数和列数
_Worksheet ws;Range range; range = ws.GetUsedRange();//获得Worksheet已使用的范围range = range.GetRows(); / ...
- BZOJ_1030_[JSOI2007]文本生成器_AC自动机+DP
BZOJ_1030_[JSOI2007]文本生成器_AC自动机+DP Description JSOI交给队员ZYX一个任务,编制一个称之为“文本生成器”的电脑软件:该软件的使用者是一些低幼人群, 他 ...
- js多个元素随机且不重叠分布在页面中
最近,公司要做一个类似挖矿的项目,大概其是当用户登录进入首页后,如果用户有已经生成的原力值,则在其点击原力值后可以类似蚂蚁森林那样收集原力值,当用户将所有的原力值收集完毕后开始提醒用户新的原力值正在生 ...
- 利用FT232实现USB转串口
FT232B数据手册:http://www.ftdichip.com/Support/Documents/DataSheets/ICs/DS_FT232BL_BQ.pdf 常用的USB转串口的芯片有F ...