今天领导让我导出17年至19年的XX消费记录。还要按月汇总...我也醉了。查了各种资料都是说用convert(),再用 left截断。后来终于在生产库里边找到了format_date()函数。真不错,向无名英雄致敬!

这篇文章介绍了怎样创建一个命令函数来获得不同国家和应用程序所要求的大多数日期格式。

源码如下

Create function [dbo].[format_date]  (@inputdate datetime ,@format varchar(500))  returns varchar(500)  as begin declare @year varchar(4) --YYYY  declare @shortyear varchar(4) --Yr  declare @quarter varchar(4) --QQ  declare @month varchar(2) --MM  declare @week varchar(2) --WW  declare @day varchar(2) --DD  declare @24hours varchar(2) --24HH  declare @12hours varchar(2) --HH  declare @minutes varchar(2) --MI  declare @seconds varchar(2) --SS  declare @milliseconds varchar(3) --MS  declare @microseconds varchar(6) --MCS  declare @nanoseconds varchar(9) --NS  declare @dayname varchar(15) --DAY  declare @monthname varchar(15) --MONTH  declare @shortmonthname varchar(15) --MON  declare @AMPM varchar(15) --AMPM  declare @TZ varchar(15) --TZ  declare @UNIXPOSIX varchar(15) --UNIXPOSIX  --UCASE  --LCASE  declare @formatteddate varchar(500)  --Assign current date and time to  if (@inputdate is NULL or @inputdate ='')  begin set @inputdate = getdate()  end if (@format is NULL or @format ='')  begin set @format ='YYYY-MM-DD 12HH:MI:SS AMPM' end --set all values
set @year = convert(varchar(4),year(@inputdate))  set @shortyear = right(@year,2)  set @quarter = convert(varchar(1),datepart(QQ,(@inputdate)))  set @month = right('0'+convert(varchar(2),month(@inputdate)),2)  set @week = right('0'+convert(varchar(2),datepart(ww,(@inputdate))),2)  set @day = right('0'+convert(varchar(2),day(@inputdate)),2)  set @24hours = right('0'+convert(varchar(2),datepart(hh,@inputdate)),2)  set @TZ = convert(varchar(10),datename(TZ,convert(varchar(20),@inputdate)))  set @UNIXPOSIX = convert(varchar(15),datediff(ss,convert(datetime,'01/01/1970 00:00:000'),@inputdate))  if datepart(hh,@inputdate) >12  begin set @12hours = right('0'+convert(varchar(2),datepart(hh,@inputdate)) -12,2)  end else begin set @12hours = right('0'+convert(varchar(2),datepart(hh,@inputdate)) ,2)  end if datepart(hh,@inputdate) >11  begin set @AMPM ='PM' end else begin set @AMPM ='AM' end set @minutes = right('0'+convert(varchar(2),datepart(n,@inputdate)),2)  set @seconds = right('0'+convert(varchar(2),datepart(ss,@inputdate)),2)  set @milliseconds = convert(varchar(3),datepart(ms,@inputdate))  set @microseconds = convert(varchar(6),datepart(mcs,@inputdate))  set @nanoseconds = convert(varchar(9),datepart(ns,@inputdate))  set @dayname = datename(weekday,@inputdate)  set @monthname = datename(mm,@inputdate)  set @shortmonthname= left(datename(mm,@inputdate),3)  set @formatteddate = @format  set @formatteddate=replace(@formatteddate,'MONTH',@monthname)  set @formatteddate=replace(@formatteddate,'MON',@shortmonthname)  set @formatteddate=replace(@formatteddate,'AMPM',@AMPM)  set @formatteddate=replace(@formatteddate,'YYYY',@year)  set @formatteddate=replace(@formatteddate,'Yr',@shortyear)  set @formatteddate=replace(@formatteddate,'QQ',@quarter)  set @formatteddate=replace(@formatteddate,'WW',@week)  set @formatteddate=replace(@formatteddate,'MM',@month)  set @formatteddate=replace(@formatteddate,'DD',@Day)  set @formatteddate=replace(@formatteddate,'24HH',@24hours)  set @formatteddate=replace(@formatteddate,'12HH',@12hours)  set @formatteddate=replace(@formatteddate,'Mi',@minutes)  set @formatteddate=replace(@formatteddate,'SS',@seconds)  set @formatteddate=replace(@formatteddate,'MS',@milliseconds)  set @formatteddate=replace(@formatteddate,'MCS',@microseconds)  set @formatteddate=replace(@formatteddate,'NS',@nanoseconds)  set @formatteddate=replace(@formatteddate,'DAY',@dayname)  set @formatteddate=replace(@formatteddate,'TZ',@TZ)  set @formatteddate=replace(@formatteddate,'UNIXPOSIX',@UNIXPOSIX)  if charindex('ucase',@formatteddate)<>0  begin set @formatteddate=replace(@formatteddate,'ucase','')  set @formatteddate=upper(@formatteddate)  end if charindex('lcase',@formatteddate)<>0   begin set @formatteddate=replace(@formatteddate,'lcase','')  set @formatteddate=lower(@formatteddate)  end return @formatteddate  end 

现在让我们使用不同的场景来看看这个函数的使用。下面关键字中的任何一个都可以联合使用来显示不同格式的日期。
YYYY - YYYY格式的年份,包括百年
Yr - YY格式的年份
QQ - 显示季度
MM - 显示月份
WW - 显示星期
DD - 显示日子
24HH - 以24小时制的形式显示小时
12HH - 以12小时制的形式显示小时
MI - 显示分钟
SS - 显示秒
MS - 显示毫秒
MCS - 显示微秒
NS - 显示十亿分之一秒
DAY - 显示日子的名称,例如:Monday
MONTH- - 显示月份的名称,例如:August
MON - 显示短的月份名称,例如:Aug
AMPM - 显示AM/PM 用于12小时制格式
TZ - 显示时间偏移
UNIXPOSIX - 显示unix posix时间。秒数从1/1/1970开始
UCASE - 以大写显示结果
LCASE - 以小写显示结果

/*场景 1
如果你想以YYYY/MM/DD的形式显示日期,那么执行下面的命令。
/*
select dbo.format_date(GETDATE(),'YYYY/MM/DD') as Date--结果 :2019/08/10/*场景 2
要以YYYY-MM-DD格式显示日期,那么执行下面的命令。
*/
select dbo.format_date(GETDATE(),'YYYY-MM-DD') as Date--结果 :2019-08-10/*场景 3
要显示年份和季节,那么执行下面的命令。
*/
select dbo.format_date(GETDATE(),'Year: YYYY, Quarter: QQ ') as Date--结果 :Year: 2019, Quarter: 3 /*场景 4
要以24小时制格式显示时间,执行下面的命令。
*/
select dbo.format_date(GETDATE(),'24HH:MI:SS') as Time--结果 :14:18:36/*场景 5
要以12小时制格式显示时间,执行下面的命令。
*/
select dbo.format_date(GETDATE(),'12HH:MI:SS AMPM') as Time--结果 :2:19:57 PM/*场景 6
要以日期形式为YYYY/MM/DD 和时间形式为24小时制来显示,那么执行下面的命令。
*/
select dbo.format_date(GETDATE(),'YYYY/MM/DD 24HH:MI:SS') as DateTime--结果 :2019/08/10 14:20:38/*场景 7
要以日期形式为YYYY/MM/DD和时间形式为12小时制来显示,那么执行下面的命令。
*/
select dbo.format_date(GETDATE(),'YYYY/MM/DD 12HH:MI:SS AMPM') as DateTime--结果 :2019/08/10 2:21:41 PM/*场景 8
要以DD-MM-YY 的形式来显示日期,那么执行下面的命令。
*/
select dbo.format_date(GETDATE(),'DD-MM-YR') as Date
--结果 :10-08-19/*场景 9要以DDMMYY的形式显示日期,那么执行下面的命令。
*/
select dbo.format_date(GETDATE(),'DDMMYR') as Date
--结果 :100819/*
场景 10要显示日期和时间以你可以使用它来作为文件名称后缀的形式,那么执行下面的命令。
*/
select dbo.format_date(GETDATE(),'YYYY_MM_DD_HH_MI_SS_MS_MCS_NS') as FileNameSuffix
--结果 :2019_08_10_HH_24_30_773_773000_773000000/*场景 11要显示日期、时间、月份名称和日子的名称,那么执行下面的命令。
*/
select dbo.format_date(GETDATE(),'DAY, MONTH DD, YYYY 12HH:MI:SS AMPM') as DateTime
--结果 :星期六, 08 10, 2019 2:25:23 PM/*场景 12要以时间偏移量来显示日期、时间、月份名称和日子的名称,那么执行下面的命令。
*/
select dbo.format_date(GETDATE(),'DAY MONTH DDth, YR 12HH:MI:SS TZ') as DateTime
--结果 :星期六 08 10th, 19 2:26:04 +00:00/*场景 13要显示unix posix时间,那么执行下面的命令。
*/
select dbo.format_date(GETDATE(),'Your Unix time is: UNIXPOSIX') as POSIX
--结果 :Your Unix time is: 1565447200/*场景 14要显示年份和星期,那么执行下面的命令。
*/
select dbo.format_date(GETDATE(),'Year: YYYY, Week: WW') as YearWeek
--结果 :Year: 2019, Week: 32/*场景15要显示带有月份名称的日期,那么执行下面的命令。
*/
select dbo.format_date(GETDATE(),'YYYY-MONTH-DD') as Date
--结果 :2019-08-10/*场景16要显示带有短的月份名称的日期,那么执行下面的命令。
*/
select dbo.format_date(GETDATE(),'YYYY-MON-DD') as Date
--结果 :2019-08-10/*
场景17要显示带有大写的短的月份名称的日期,那么执行下面的命令。
*/
select dbo.format_date(GETDATE(),'YYYY-MON-DD ucase') as Date
--结果 :2019-08-10 /*场景18要显示带有小写的月份名称的日期,那么执行下面的命令。
*/
select dbo.format_date(GETDATE(),'YYYY-MONTH-DD lcase') as Date
--结果 :2019-08-10 /*场景19如果你不传递参数,那么这个函数使用默认的格式化日期和时间的方法。执行下面的命令:
*/
select dbo.format_date(NULL,NULL)select dbo.format_date(NULL,'YYYY')select dbo.format_date(getdate(),NULL)--2019-08-10 2:36:56 PM
--2019
--2019-08-10 2:36:56 PM

mybatis 不同格式日期比较大小_怎样创建一个命令函数来获得不同国家和应用程序所要求的大多数日期格式...相关推荐

  1. python输入三个整数_#python输入一个序列,其中包含表示年,月,日的三个整数,判断这个日期是当年的第几?#...

    python ,获取当前时刻,要求格式为:年月日,时分 am或pm >>> import time >>> print time.strftime("%Y ...

  2. angular 渐进_如何创建具有Angular和无头CMS的渐进式Web应用程序

    angular 渐进 by Ondrej Chrastina 通过Ondrej Chrastina 如何创建具有Angular和无头CMS的渐进式Web应用程序 (How to create a pr ...

  3. 如果表不存在则创建_当创建一个文件的时候,操作系统发生了什么

    操作文件是我们平时经常有的操作.但是我们可能并不是很了解他们原理,比如为什么删除一个很大的文件,会非常快?创建一个文件的时候,系统发生了什么?为什么删除的文件,还可以恢复?知其然知其所以然.我们一起深 ...

  4. 命令 结构_只需一个命令!从你的U盘里读出更多内容

    U盘是我们最常使用的一种USB设备,本文使用DOSUSB做驱动,试图以读取扇区的方式读取你的U盘. 温馨提示 本文涉及的协议可能会比较多. 了解你的U盘 首先我们用程序usbview.exe去看一下你 ...

  5. python函数的组成要素_写好一个Python函数的六要素

    Python 虽然好用,但用好真的很难.尤其是函数部分,只要写不好,后面的一连串人都会遭殃.看又看不懂,测试起来也麻烦,维护又维护不动,真是让人头疼. 那怎么写好一个 Python 函数呢?<W ...

  6. eps提取高程点在哪里_只需一个命令,就能提取CAD图纸所有高程点坐标,感觉学费白交了...

    原标题:只需一个命令,就能提取CAD图纸所有高程点坐标,感觉学费白交了 作为乙方设计师,经常会碰到一些甲方爸爸临时扔一个图纸过来,我们这个时候就要对图纸里提取有效数据信息才能进行下一步工作,拿到CAD ...

  7. 页面怎么创建一个数组_怎么创建一个企业网站?

    怎么创建一个企业网站?互联网时代下,很多企业都纷纷搭建网站,网站不仅可以提高企业形象,还可以为企业带来盈利,那么怎么创建一个企业网站呢?下面小编来告诉你怎么搭建企业网站. 1.网站定位 做好企业网站建 ...

  8. python3怎么创建一个链表_怎么创建一个自己的微信公众号

    随着移动互联网的发展,微信公众号这两年成为媒体传播的重要平台.平时我们每个人都会接触见到到各种非常好的微信公众号内容,碰到喜欢的有帮助的也会自觉的转发朋友圈或者群,分享给自己身边的人.于是很多人就想了 ...

  9. rpython求随机数代码4段5个字符_如何创建一个4位数的随机数并将其存储为变量...

    我正在Python2.7.10中开发一个4位数的猜谜游戏.但我找不到如何随机生成一个4位数的数字,并将其存储为变量.数字必须介于1111和9999之间 困难的是,我想把它作为变量存储,而不是打印出来让 ...

最新文章

  1. jenkins Email-EXT plugins
  2. Java代码输出到txt文件(申请专利贴源码的必备利器)
  3. linux df命令功能,Linux df命令简要介绍
  4. c语言memcmp和java的_C语言memcmp()函数:比较m字节长的两个字符串s1和s2
  5. 架构选型,究竟啥时候选redis?
  6. Netty4实战 - TCP粘包拆包解决方案
  7. python棋盘覆盖_java实现的棋盘覆盖
  8. html标签种类很多,为什么不都用div?
  9. matlab系统稳定性仿真实验,基于Matlab的电力系统暂态稳定仿真实验与分析
  10. 反馈抑制器使用场景与市场
  11. 【Java】P1957 口算练习题—(洛谷OJ)
  12. Layui模板-laytpl
  13. Hadoop之HDFS的使用
  14. java兔子繁殖_兔子繁衍问题 (考虑死亡)
  15. 三件套都有什么_单人床品三件套都有哪些?
  16. JavaWeb会话和会话技术之Cookie
  17. 多重假设检验:Bonferroni 和 FDR
  18. Java 百度地图 根据经纬度(坐标) 获取乡镇
  19. 单样本和双样本的检验
  20. 小云路由器mysql地址_小云路由器助手

热门文章

  1. 【Elasticsearch】Elasticsearch中数据是如何存储的
  2. 【SpringCloud】Spring cloud Alibaba Sentinel 降级规则
  3. 【ElasticSearch】ElasticSearch immense term错误
  4. 【Java】图解 Spring 循环依赖,写得太好了
  5. 【MyBatis】Mybatis使用SqlSessionFactory加载xml文件
  6. 95-290-055-源码-内存管理-HybridMemorySegment
  7. 【Siddhi】DefinitionNotExistException: Stream with stream ID xxx has not been defined
  8. linux apache mod_jk,Linux上安装Apache,安装mod_jk,相关配置
  9. mysql数据库命令 单选_mysql中创建数据库命令是?_学小易找答案
  10. 又一款神器:半小时带你轻松上手k8s