不一样的 SQL Server 日期格式化

不一样的 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

  • formatnvarchar 格式模式。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# 里的日期时间格式,数字格式

  1. SELECT FORMAT (getdate(), 'yyyyMMddHHmmss') >> 20190218033523

  2. SELECT FORMAT (getdate(), 'yyyy-MM-dd HH:mm:ss') >> 2019-02-18 03:35:23

  1. DECLARE @d DATETIME = GETDATE();

  2. SELECT FORMAT( @d, 'dd/MM/yyyy', 'en-US' ) AS 'DateTime Result'

  3. ,FORMAT(123456789,'###-##-####') AS 'Custom Number Result';

output:

  1. DateTime Result Custom Number Result

  2. -------------- --------------------

  3. 27/09/2012 123-45-6789

  4. (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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/312886.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

怕被政治烧到,RISC-V基金会决定迁址瑞士

由于政治影响,RISC-V 基金会决定迁址瑞士。FILE PHOTO: Technology on display at Huaweis headquarters in Shenzhen, Guangdong province, China May 29, 2019. REUTERS/Jason Lee去年 12 月份,RISC-V 基金会在一次会议上宣布,它将迁址到一…

进程和线程的状态

一、进程的基本状态 进程经常讨论的基本状态为:就绪状态(Ready)、运行状态(Running)、阻塞状态(Blocked)。此外,还包括不常讨论的创建和结束。 就绪状态:当进程已分配到除…

ASP.NET Core快速入门(第6章:ASP.NET Core MVC)--学习笔记

点击蓝字关注我们课程链接:http://video.jessetalk.cn/course/explore良心课程,大家一起来学习哈!任务40:介绍1.Individual authentication 模板2.EF Core Migration3.Identity MVC:UI4.Identity MVC:EF I…

进程间通信的方式总结

进程间通信就是在不同进程之间传播或交换信息。 进程间通信的目的如下: ①数据传输:一个进程需要将它的数据发送给另一个进程,发送的数据量在一个字节到几兆字节之间。 ②共享数据:多个进程想要操作共享数据,一个进程对…

EF Core For MySql查询中使用DateTime.Now作为查询条件的一个小问题

背景最近一直忙于手上澳洲线上项目的整体迁移和升级的准备工作,导致博客和公众号停更。本周终于艰难的完成了任务,借此机会,总结一下项目中遇到的一些问题。EF Core 一直是我们团队中中小型项目常用的 ORM 框架,在使用 SQL Server…

操作系统进程(作业)调度常见算法详解

一、进程调度的原因 在操作系统中,由于进程综述多于处理机,它们必然竞争处理机。为了充分利用计算机系统中的CPU资源,让计算机系统能够多快好省地完成我们让它做的各种任务,所以需要进行进程调度。 二、进程调度的定义 进程调度&a…

Orleans 3.0 为我们带来了什么

原文:https://devblogs.microsoft.com/dotnet/orleans-3-0/作者:Reuben Bond,Orleans首席软件开发工程师翻译:艾心这是一篇来自Orleans团队的客座文章,Orleans是一个使用.NET创建分布式应用的跨平台框架。获取更多信息…

进程的同步与互斥

现代操作系统采用多道程序设计机制,多个进程可以并发执行,CPU在进程之间来回切换,共享某些资源,提高了资源的利用率,但这也使得处理并发执行的多个进程之间的冲突和相互制约关系成为了一道难题。如果对并发进程的调度不…

缓存击穿/穿透/雪崩

缓存击穿/穿透/雪崩Intro使用缓存需要了解几个缓存问题,缓存击穿、缓存穿透以及缓存雪崩,需要了解它们产生的原因以及怎么避免,尤其是当你打算设计自己的缓存框架的时候需要考虑如何处理这些问题。缓存击穿一般的缓存系统,都是按照…

临界区、互斥量、信号量、事件的区别

四种进程或线程同步互斥的控制方法: 1、临界区:通过对多线程的串行化来访问公共资源或一段代码,速度快,适合控制数据访问。 2、互斥量:为协调共同对一个共享资源的单独访问而设计的。 3、信号量:为控制一个具有有限数量用户资源而设计。 4…

99%的人不知道搜索引擎的6个技巧

点击上方“dotNET全栈开发”,“设为星标”加“星标★”,每天11.50,好文必达全文约900字,预计阅读时间1分钟今天看了一期seo优化的视频,其中就有这么一篇关于百度搜索的几个小技巧,这里整理出来,…

用信号量解决进程的同步与互斥

转自:http://www.cnblogs.com/whatbeg/p/4435286.html 现代操作系统采用多道程序设计机制,多个进程可以并发执行,CPU在进程之间来回切换,共享某些资源,提高了资源的利用率,但这也使得处理并发执行的多个进程…

扎心了,程序员2017到2019经历了什么?

刷爆朋友圈的2017-2019到底是什么梗?只剩下33天了,就到2020年了最后一批90后,马上就要30了?一到年底,就会陷入回忆和比较中近几日,网友开始将2017年和2019年进行对比,不少人晒出了自己在17年和1…

【.NETCore 3】Ids4 ║ 统一角色管理(上)

前言书接上文,咱们在上周,通过一篇《思考》 性质的文章,和很多小伙伴简单的讨论了下,如何统一同步处理角色的问题,众说纷纭,这个我一会儿会在下文详细说到,而且我最终也定稿方案了。所以今天咱们…

操作系统死锁详解

一、死锁的定义 死锁是两个或两个以上的进程中的每一个都在等待其中另一个进程释放资源而被封锁,它们都无法向前推进,这种现象称为死锁。 二、产生死锁的主要原因 (1) 因为系统资源不足。 (2) 进程运行推进…

.NET Core 3.0 使用Nswag生成Api文档和客户端代码

摘要在前后端分离、Restful API盛行的年代,完美的接口文档,成了交流的纽带。在项目中引入Swagger (也称为OpenAPI),是种不错的选择,它可以让接口数据可视化。下文将会演示利用Nswag如何生成Api文档利用NSwa…

什么是虚拟内存?

虚拟内存是计算机系统内存管理的一种技术。 它使得应用程序认为它拥有连续的可用的内存(一个连续完整的地址空间),而实际上,它通常是被分隔成多个物理内存碎片,还有部分暂时存储在外部磁盘存储器上,在需要…

深入研究 Angular 和 ASP.NET Core 3.0

本文要点:可以把多个 Angular 应用程序集成到 ASP.NET 网站中把 Angular 代码打包成 Web 组件是引导 Angular 应用程序的好方法可以把用 Angular 编写的 Web 组件轻松地集成到 ASP.NET 视图中把 Angular 解决方案构造成 Angular 应用程序的集合以实现更好的代码重用…

操作系统内存管理--简单、页式、段式、段页式

一、内存管理的目的和功能 内存一直是计算机系统中宝贵而又紧俏的资源,内存能否被有效、合理地使用,将直接影响到操作系统的性能。此外,虽然物理内存的增长现在达到了N个GB,但比物理内存增长还快的是程序,所以无论物理…

网易裁员背后,芸芸众生,相煎何急

十一月初拖家带口去了上海,到了著名的城隍庙参观,无意中看到了一个仅出现在历史书上的古老物件“西洋镜”,仿佛跨越百年,来到那个如裹脚布般冗长而乏味的古老年代,看到了一群有一群卑微的小民在生活的裹挟之下&#xf…