您的位置:首页 > 数据库

SQL中日期格式化

2017-05-03 11:48 239 查看
转载至: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:57AMSelect CONVERT(varchar(100), GETDATE(), 1): 05/16/06Select CONVERT(varchar(100), GETDATE(), 2): 06.05.16Select CONVERT(varchar(100), GETDATE(), 3): 16/05/06Select CONVERT(varchar(100), GETDATE(), 4): 16.05.06Select CONVERT(varchar(100), GETDATE(), 5): 16-05-06Select CONVERT(varchar(100), GETDATE(), 6): 16 05 06Select CONVERT(varchar(100), GETDATE(), 7): 05 16, 06Select CONVERT(varchar(100), GETDATE(), 8): 10:57:46Select CONVERT(varchar(100), GETDATE(), 9): 05 16 2006 10:57:46:827AMSelect CONVERT(varchar(100), GETDATE(), 10): 05-16-06Select CONVERT(varchar(100), GETDATE(), 11): 06/05/16Select CONVERT(varchar(100), GETDATE(), 12): 060516Select CONVERT(varchar(100), GETDATE(), 13): 16 05 2006 10:57:46:937Select CONVERT(varchar(100), GETDATE(), 14): 10:57:46:967Select CONVERT(varchar(100), GETDATE(), 20): 2006-05-16 10:57:47Select CONVERT(varchar(100), GETDATE(), 21): 2006-05-16 10:57:47.157Select CONVERT(varchar(100), GETDATE(), 22): 05/16/06 10:57:47 AMSelect CONVERT(varchar(100), GETDATE(), 23): 2006-05-16Select CONVERT(varchar(100), GETDATE(), 24): 10:57:47Select CONVERT(varchar(100), GETDATE(), 25): 2006-05-16 10:57:47.250Select CONVERT(varchar(100), GETDATE(), 100): 05 16 2006 10:57AMSelect CONVERT(varchar(100), GETDATE(), 101): 05/16/2006Select CONVERT(varchar(100), GETDATE(), 102): 2006.05.16Select CONVERT(varchar(100), GETDATE(), 103): 16/05/2006Select CONVERT(varchar(100), GETDATE(), 104): 16.05.2006Select CONVERT(varchar(100), GETDATE(), 105): 16-05-2006Select CONVERT(varchar(100), GETDATE(), 106): 16 05 2006Select CONVERT(varchar(100), GETDATE(), 107): 05 16, 2006Select CONVERT(varchar(100), GETDATE(), 108): 10:57:49Select CONVERT(varchar(100), GETDATE(), 109): 05 16 2006 10:57:49:437AMSelect CONVERT(varchar(100), GETDATE(), 110): 05-16-2006Select CONVERT(varchar(100), GETDATE(), 111): 2006/05/16Select CONVERT(varchar(100), GETDATE(), 112): 20060516Select CONVERT(varchar(100), GETDATE(), 113): 16 05 2006 10:57:49:513Select CONVERT(varchar(100), GETDATE(), 114): 10:57:49:547Select CONVERT(varchar(100), GETDATE(), 120): 2006-05-16 Select CONVERT(varchar(100), GETDATE(), 121): 2006-05-16 10:57:49.700Select CONVERT(varchar(100), GETDATE(), 126): 2006-05-16T10:57:49.827Select CONVERT(varchar(100), GETDATE(), 130): 18 ???? ?????? 1427 10:57:49:907AMSelect 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:46Select CONVERT(varchar(100), GETDATE(), 24): 10:57:47Select CONVERT(varchar(100), GETDATE(), 108): 10:57:49Select CONVERT(varchar(100), GETDATE(), 12): 060516Select 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()) --WednesdaySELECT 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;GODECLARE @datevar DATETIME;SET @datevar = '1998/31/12';SELECT @datevar AS DateVar;GO-- Set date format to year, month, day.SET DATEFORMAT ymd;GODECLARE @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/2001style数字在转换时间时的含义如下:------------------------------------------------------------------------------------------------------------
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小时制)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  日期格式化