设为首页 收藏本站
查看: 638|回复: 0

[经验分享] SQL中日期格式化

[复制链接]

尚未签到

发表于 2018-10-20 10:47:11 | 显示全部楼层 |阅读模式
  转载至:http://username2.iteye.com/blog/1698520
  year( uptime ) 取出日期的年
  month(uptime) 日期的月
  CONVERT(varchar(10), uptime, 120 )   取出日期
  时间转换:
  convert(datetime,'2006-04-01')
  转换成时间字符串
  convert(varchar(10),getdate(),23) ---------- 2014-04-04
  Sql Server 中一个非常强大的日期格式化函数
  Select CONVERT(varchar(100), GETDATE(), 0): 05 16 2006 10:57AM
  Select CONVERT(varchar(100), GETDATE(), 1): 05/16/06
  Select CONVERT(varchar(100), GETDATE(), 2): 06.05.16
  Select CONVERT(varchar(100), GETDATE(), 3): 16/05/06
  Select CONVERT(varchar(100), GETDATE(), 4): 16.05.06
  Select CONVERT(varchar(100), GETDATE(), 5): 16-05-06
  Select CONVERT(varchar(100), GETDATE(), 6): 16 05 06
  Select CONVERT(varchar(100), GETDATE(), 7): 05 16, 06
  Select CONVERT(varchar(100), GETDATE(), 8): 10:57:46
  Select CONVERT(varchar(100), GETDATE(), 9): 05 16 2006 10:57:46:827AM
  Select CONVERT(varchar(100), GETDATE(), 10): 05-16-06
  Select CONVERT(varchar(100), GETDATE(), 11): 06/05/16
  Select CONVERT(varchar(100), GETDATE(), 12): 060516
  Select CONVERT(varchar(100), GETDATE(), 13): 16 05 2006 10:57:46:937
  Select CONVERT(varchar(100), GETDATE(), 14): 10:57:46:967
  Select CONVERT(varchar(100), GETDATE(), 20): 2006-05-16 10:57:47
  Select CONVERT(varchar(100), GETDATE(), 21): 2006-05-16 10:57:47.157
  Select CONVERT(varchar(100), GETDATE(), 22): 05/16/06 10:57:47 AM
  Select CONVERT(varchar(100), GETDATE(), 23): 2006-05-16
  Select CONVERT(varchar(100), GETDATE(), 24): 10:57:47
  Select CONVERT(varchar(100), GETDATE(), 25): 2006-05-16 10:57:47.250
  Select CONVERT(varchar(100), GETDATE(), 100): 05 16 2006 10:57AM
  Select CONVERT(varchar(100), GETDATE(), 101): 05/16/2006
  Select CONVERT(varchar(100), GETDATE(), 102): 2006.05.16
  Select CONVERT(varchar(100), GETDATE(), 103): 16/05/2006
  Select CONVERT(varchar(100), GETDATE(), 104): 16.05.2006
  Select CONVERT(varchar(100), GETDATE(), 105): 16-05-2006
  Select CONVERT(varchar(100), GETDATE(), 106): 16 05 2006
  Select CONVERT(varchar(100), GETDATE(), 107): 05 16, 2006
  Select CONVERT(varchar(100), GETDATE(), 108): 10:57:49
  Select CONVERT(varchar(100), GETDATE(), 109): 05 16 2006 10:57:49:437AM
  Select CONVERT(varchar(100), GETDATE(), 110): 05-16-2006
  Select CONVERT(varchar(100), GETDATE(), 111): 2006/05/16
  Select CONVERT(varchar(100), GETDATE(), 112): 20060516
  Select CONVERT(varchar(100), GETDATE(), 113): 16 05 2006 10:57:49:513
  Select CONVERT(varchar(100), GETDATE(), 114): 10:57:49:547
  Select CONVERT(varchar(100), GETDATE(), 120): 2006-05-16
  Select CONVERT(varchar(100), GETDATE(), 121): 2006-05-16 10:57:49.700
  Select CONVERT(varchar(100), GETDATE(), 126): 2006-05-16T10:57:49.827
  Select CONVERT(varchar(100), GETDATE(), 130): 18 ???? ?????? 1427 10:57:49:907AM
  Select CONVERT(varchar(100), GETDATE(), 131): 18/04/1427 10:57:49:920AM
  得到固定的时分秒
  CONVERT(varchar(10), getDate(),120 )+' 23:23:59'   ;2006-05-16  23:23:59
  常用:
  Select CONVERT(varchar(100), GETDATE(), 8): 10:57:46
  Select CONVERT(varchar(100), GETDATE(), 24): 10:57:47
  Select CONVERT(varchar(100), GETDATE(), 108): 10:57:49
  Select CONVERT(varchar(100), GETDATE(), 12): 060516
  Select CONVERT(varchar(100), GETDATE(), 23): 2006-05-16
  -------------------
  1、常用日期方法(下面的GetDate() = '2006-11-08 13:37:56.233')
  (1)DATENAME ( datepart ,date )
  返回表示指定日期的指定日期部分的字符串。Datepart详见下面的列表.
  SELECT DateName(day,Getdate()) –返回8
  (2)DATEPART ( datepart , date )
  返回表示指定日期的指定日期部分的整数。
  SELECT DATEPART(year,Getdate()) –返回2006
  (3)DATEADD (datepart , number, date )
  返回给指定日期加上一个时间间隔后的新datetime 值。
  SELECT DATEADD(week,1,GetDate()) --当前日期加一周后的日期
  (4)DATEDIFF ( datepart , startdate , enddate )
  返回跨两个指定日期的日期边界数和时间边界数。
  SELECT DATEDIFF(month,'2006-10-11','2006-11-01') --返回1
  (5)DAY ( date )
  返回一个整数,表示指定日期的天datepart 部分。
  SELECT day(GetDate()) –返回8
  (6)GETDATE()
  以datetime 值的SQL Server 2005 标准内部格式返回当前系统日期和时间。
  SELECT GetDate()   --返回2006-11-08 13:37:56.233
  (7)MONTH ( date )
  返回表示指定日期的“月”部分的整数。
  SELECT MONTH(GETDATE()) --返回11
  (8)YEAR ( date )
  返回表示指定日期的“年”部分的整数。
  SELECT YEAR(GETDATE()) --返回2006
  2、取特定日期
  (1)获得当前日期是星期几
  SELECT DateName(weekday,Getdate()) --Wednesday
  (2)计算哪一天是本周的星期一
  SELECT DATEADD(week, DATEDIFF(week,'1900-01-01',getdate()), '1900-01-01')  --返回2006-11-06 00:00:00.000
  或
  SELECT DATEADD(week, DATEDIFF(week,0,getdate()),0)
  (3)当前季度的第一天
  SELECT DATEADD(quarter, DATEDIFF(quarter,0,getdate()), 0)—返回2006-10-01 00:00:00.000
  (4)如何取得某个月的天数
  SELECT Day(dateadd(ms,-3,DATEADD(mm, DATEDIFF(m,0,'2006-02-03')+1,0)))  —返回28
  (5)一个季度多少天
  declare @m tinyint,@time smalldatetime
  select @m=month(getdate())
  select @m=case when @m between 1 and 3 then 1
  when @m between 4 and 6 then 4
  when @m between 7  and 9 then 7
  else 10 end
  select @time=datename(year,getdate())+'-'+convert(varchar(10),@m)+'-01'
  select datediff(day,@time,dateadd(mm,3,@time)) —返回92
  (6)获得年月日(yyyy-MM-dd)
  SELECT CONVERT(VARCHAR(10),GETDATE(),120) –返回2006-11-08
  3、其它
  (1)--下面的示例将日期指定为数字。数据库引擎将0 解释为1900 年1 月1 日。
  SELECT MONTH(0), DAY(0), YEAR(0) –返回1    1   1900
  --下面两句是等效的
  SELECT DATENAME(WEEKDAY,0)
  SELECT DATENAME(WEEKDAY,'1900-01-01')
  (2)SET DATEFIRST { number | @number_var }
  将一周的第一天设置为从1 到7 的一个数字。
  SET DATEFIRST 1 --表示一周的第一天是“星期一"
  SELECT DATENAME(WEEKDAY,GETDATE()) --Wednesday
  SELECT DATEPART(weekday,GETDATE()) --返回3
  --查看当前设置情况
  select @@DATEFIRST
  (3)SET DATEFORMAT { format | @format_var }
  设置用于输入datetime 或smalldatetime 数据的日期部分(月/日/年)的顺序。
  ...有效参数包括mdy、dmy、ymd、ydm、myd 和dym。
  ...该设置仅用在将字符串转换为日期值时的解释中。它不影响日期值的显示。
  ...SET DATEFORMAT 的设置是在执行或运行时设置,而不是在分析时设置。
  ...SET DATEFORMAT 将覆盖SET LANGUAGE 的隐式日期格式设置。
  下面是例子:
  -- Set date format to year, day, month.
  SET DATEFORMAT ydm;
  GO
  DECLARE @datevar DATETIME;
  SET @datevar = '1998/31/12';
  SELECT @datevar AS DateVar;
  GO
  -- Set date format to year, month, day.
  SET DATEFORMAT ymd;
  GO
  DECLARE @datevar DATETIME;
  SET @datevar = '1998/12/31';
  SELECT @datevar AS DateVar;
  GO
  (4)日期部分的列表
  日期部分
  缩写
  year
  yy, yyyy
  quarter
  qq, q
  month
  mm, m
  dayofyear
  dy, y
  day
  dd, d
  week
  wk, ww
  weekday
  dw
  hour
  hh
  minute
  mi, n
  second
  ss, s
  millisecond
  ms
  数据类型
  范围
  精确度
  datetime
  1753 年 1 月 1 日到 9999 年 12 月 31 日
  3.33 毫秒
  smalldatetime
  1900 年 1 月 1 日到 2079 年 6 月 6 日
  1 分钟
  ---------------------------------------------
  格式:
  CONVERT(data_type,expression[,style])
  说明:
  此样式一般在时间类型(datetime,smalldatetime)与字符串类型(nchar,nvarchar,char,varchar)
  相互转换的时候才用到.
  例子:
  SELECT CONVERT(varchar(30),getdate(),101) now
  结果为:
  now
  ---------------------------------------
  |09/15/2001
  style数字在转换时间时的含义如下:
  ------------------------------------------------------------------------------------------------------------
  Style(2位表示年份)    |   Style(4位表示年份)    |    输入输出格式
  ------------------------------------------------------------------------------------------------------------
  0                                | 100                            |    mon dd yyyy hh:miAM(或PM)
  ------------------------------------------------------------------------------------------------------------
  1                                |   101    美国                 |    mm/dd/yy
  ------------------------------------------------------------------------------------------------------------
  2                                |   102     ANSI                |    yy-mm-dd
  ------------------------------------------------------------------------------------------------------------
  3                                |   103     英法                 |    dd/mm/yy
  ------------------------------------------------------------------------------------------------------------
  4                                |   104     德国                 |    dd.mm.yy
  ------------------------------------------------------------------------------------------------------------
  5                                |   105     意大利              |    dd-mm-yy
  ------------------------------------------------------------------------------------------------------------
  6                                |   106                             |    dd mon yy
  ------------------------------------------------------------------------------------------------------------
  7                                |   107                             |    mon dd,yy
  ------------------------------------------------------------------------------------------------------------
  8                                |   108                             |    hh:mm:ss
  ------------------------------------------------------------------------------------------------------------
  9                                |   109                             |    mon dd yyyy hh:mi:ss:mmmmAM(或PM)
  ------------------------------------------------------------------------------------------------------------
  10                              |   110     美国                  |    mm-dd-yy
  ------------------------------------------------------------------------------------------------------------
  11                              |   111     日本                  |    yy/mm/dd
  ------------------------------------------------------------------------------------------------------------
  12                              |   112     ISO                   |    yymmdd
  ------------------------------------------------------------------------------------------------------------
  13                              |   113      欧洲默认值      |    dd mon yyyy hh:mi:ss:mmm(24小时制)
  ------------------------------------------------------------------------------------------------------------
  14                              |   114                             |    hh:mi:ss:mmm(24小时制)
  ------------------------------------------------------------------------------------------------------------
  20                              |   120      ODBC 规范      |     yyyy-mm-dd hh:mi:ss(24小时制)
  ------------------------------------------------------------------------------------------------------------
  21                              |    121                            |     yyyy-mm-dd hh:mi:ss:mmm(24小时制)
  


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-623978-1-1.html 上篇帖子: 用SQL存储过程生成唯一单据号 下篇帖子: The server time zone value
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表