SQL 日期格式大全在函数CONVERT()中你可以使用许多种不同风格的日期和时间格式。
0) Default mon dd yyyy hh:miAM1) USA mm/dd/yy2) ANSI yy.mm.dd3) British/French dd/mm/yy4) German dd.mm.yy5) Italian dd-mm-yy6) - dd mon yy7) - mon dd,yy8) - hh:mi:ss9) Default + milliseconds--mon dd yyyyhh:mi:ss:mmmAM(or )10) USA mm-dd-yy11) JAPAN yy/mm/dd12) ISO yymmdd13) Europe Default + milliseconds--dd mon yyyyhh:mi:ss:mmm(24h)14) - hh:mi:ss:mmm(24h)类型0,9,和13总是返回四位的年。
对其它类型,要显示世纪,把style值加上100。
类型13和14返回24小时时钟的时间。
类型0,7,和13返回的月份用三位字符表示(用Nov代表November)。
对表11.1中所列的每一种格式,你可以把类型值加上100来显示有世纪的年(例如,00年将显示为2000年)。
例如,要按日本标准显示日期,包括世纪,你应使用如下的语句:SELECT CONVERT(VARCHAR(30),GETDATE(),111)在这个例子中,函数CONVERT()把日期格式进行转换,显示为2001/11/30网友跟贴:1.日期格式样式,借以将 datetime 或 smalldatetime 数据转换为字符数据(nchar、nvarchar、char、varchar、nchar 或nvarchar 数据类型);或者字符串格式样式,借以将 float、real、money 或 smallmoney 数据转换为字符数据(nchar、nvarchar、char、varchar、nchar 或 nvarchar 数据类型)。
SQL Server 支持使用科威特算法的阿拉伯样式中的数据格式。
在表中,左侧的两列表示将 datetime 或 smalldatetime 转换为字符数据的 style 值。
给 style 值加 100,可获得包括世纪数位的四位年份 (yyyy)。
不带世纪数位 (yy) 带世纪数位 (yyyy) 标准输入/输出**- 0 或 100 (*) 默认值 mon dd yyyy hh:miAM(或 PM)1 101 美国 mm/dd/yyyy2 102 ANSI yy.mm.dd3 103 英国/法国 dd/mm/yy4 104 德国 dd.mm.yy5 105 意大利 dd-mm-yy6 106 - dd mon yy7 107 - mon dd, yy8 108 - hh:mm:ss- 9 或 109 (*) 默认值 + 毫秒 mon dd yyyy hh:mi:ss:mmmAM(或 PM)10 110 美国 mm-dd-yy11 111 日本 yy/mm/dd12 112 ISO yymmdd- 13 或 113 (*) 欧洲默认值 + 毫秒 dd mon yyyy hh:mm:ss:mmm(24h)14 114 - hh:mi:ss:mmm(24h)- 20 或 120 (*) ODBC 规范 yyyy-mm-dd hh:mm:ss[.fff]- 21 或 121 (*) ODBC 规范(带毫秒) yyyy-mm-dd hh:mm:ss[.fff]- 126(***) ISO8601 yyyy-mm-dd Thh:mm:ss:mmm(不含空格)- 130* 科威特 dd mon yyyy hh:mi:ss:mmmAM- 131* 科威特 dd/mm/yy hh:mi:ss:mmmAM2.日期函数//1.生肖(年份参数:int ls_year 返回参数:string):mid(fill('鼠牛虎兔龙蛇马羊猴鸡狗猪',48),(mod(ls_year -1900,12)+13)*2 -1,2)//2.天干地支(年份参数:int ls_year 返回参数:string):mid(fill('甲乙丙丁戊己庚辛壬癸',40),(mod(ls_year -1924,10)+11)*2 -1,2)+mid(fill('子丑寅卯辰巳午未申酉戌亥', 48),(mod(ls_year -1924,12)+13)*2 -1,2)//3.星座(日期参数:date ls_date 返回参数:string):mid("摩羯水瓶双鱼白羊金牛双子巨蟹狮子处女天秤天蝎射手摩羯",(month(ls_date)+sign(sign(day(ls_date) -(19+inte ger(mid('102123444423',month(ls_date),1))))+1))*4 -3,4)+'座'//4.判断闰年(年份参数:int ls_year 返回参数:int 0=平年,1=闰年):abs(sign(mod(sign(mod(abs(ls_year),4))+sign(mod(abs(ls_year),100))+sign(mod(abs(ls_year),400)),2)) -1)//5.某月天数(日期参数:date ls_date 返回参数:int):integer(28+integer(mid('3'+string(abs(sign(mod(sign(mod(abs(year(ls_date)),4))+sign(mod(abs(year(ls_date)), 100))+sign(mod(abs(year(ls_date)),400)),2)) -1))+'3232332323',month(ls_date),1)))//6.某月最后一天日期(日期参数:date ls_date 返回参数:date):date(year(ls_date),month(ls_date),integer(28+integer(mid('3'+string(abs(sign(mod(sign(mod(abs(year(ls_dat e)),4))+sign(mod(abs(year(ls_date)),100))+sign(mod(abs(year(ls_date)),400)),2)) -1))+'3232332323',month(ls_ date),1))))//7.另一个求某月最后一天日期(日期参数:date ls_date 返回参数:date):a.RelativeDate (date(year(ls_date)+sign(month(ls_date) -12)+1,mod(month(ls_date)+1,13)+abs(sign(mod(month(ls_ date)+1,13)) -1),1),-1)b.RelativeDate(date(year(ls_date)+integer(month(ls_date)/12),mod(month(ls_date),12)+1,1),-1)//8.另一个求某月天数(日期参数:date ls_date 返回参数:int):a.day(RelativeDate (date(year(ls_date)+sign(month(ls_date) -12)+1,mod(month(ls_date)+1,13)+abs(sign(mod(month (ls_date)+1,13)) -1),1),-1))b.day(RelativeDate(date(year(ls_date)+integer(month(ls_date)/12),mod(month(ls_date),12)+1,1),-1))//9.某月某日星期几--同PB系统函数DayName(日期参数:date ls_date 返回参数:string):'星期'+mid('日一二三四五六',(mod(year(ls_date) -1 + int((year(ls_date) -1)/4) - int((year(ls_date) -1)/100) + int((year(ls_date) -1)/400) + daysafter(date(year(ls_date),1,1),ls_date)+1,7)+1)*2 -1,2)//10.求相隔若干月份后的相对日期(日期参数:date ls_date 相隔月份(可取负数):int ls_add_month 返回参数:date): date(year(ls_date)+int((month(ls_date)+ls_add_month)/13),long(mid(fill('010203040506070809101112',48),(mod (month(ls_date)+ls_add_month -1,12)+13)*2 -1,2)),day(ls_date) -integer(right(left(string(day(RelativeDate (date(year(ls_date)+int((month(ls_date)+ls_add_month)/13)+sign(long(mid(fill('010203040506070809101112',48), (mod(month(ls_date)+ls_add_month -1,12)+13)*2 -1,2)) -12)+1,mod(long(mid(fill('010203040506070809101112',4 8),(mod(month(ls_date)+ls_add_month -1,12)+13)*2 -1,2))+1,13)+abs(sign(mod(long(mid(fill('01020304050607080 9101112',48),(mod(month(ls_date)+ls_add_month -1,12)+13)*2 -1,2))+1,13)) -1),1),-1)) -day(ls_date),'00')+'0 0000',5),3))/100)//11.求某日在当年所处的周数(日期参数:date ls_date 返回参数:int)://a.周始日为星期天//a1abs(int(-((daysafter( RelativeDate(date(year(ls_date),1,1), -mod(year(ls_date) -1 + int((year(ls_date) -1)/ 4) - int((year(ls_date) -1)/100) + int((year(ls_date) -1)/400) + 1,7) +1),ls_date)+1)/7)))//a2(使用DayNumber函数)abs(int(-((daysafter( RelativeDate(date(year(ls_date),1,1), -DayNumber(date(year(ls_date),1,1))+1),ls_date) +1)/7)))//b.周始日为星期一//b1abs(int(-((daysafter( RelativeDate(date(year(ls_date),1,1), -integer(mid('6012345',mod(year(ls_date) -1 + i nt((year(ls_date) -1)/4) - int((year(ls_date) -1)/100) + int((year(ls_date) -1)/400) + 1,7),1))),ls_date)+1) /7)))//b2(使用DayNumber函数)abs(int(-((daysafter( RelativeDate(date(year(ls_date),1,1), -integer(mid('6012345',DayNumber(date(year(ls_d ate),1,1)),1))),ls_date)+1)/7)))//12.求某日相对于过去某一日期所处的周数(日期参数:date ls_date_1(要求的某日),ls_date_2(过去的某日) 返回参数:int)://注:ls_date_1>ls_date_2//a.周始日为星期天//a1abs(int(-((daysafter( RelativeDate(ls_date_2, -mod(year(ls_date_2) -1 + int((year(ls_date_2) -1)/4) - int ((year(ls_date_2) -1)/100) + int((year(ls_date_2) -1)/400) + daysafter(date(year(ls_date_2),1,1),ls_date_2) + 1,7) +1),ls_date_1)+1)/7)))//a2(使用DayNumber函数)abs(int(-((daysafter( RelativeDate(ls_date_2, -DayNumber(ls_date_2)+1),ls_date_1)+1)/7)))//b.周始日为星期一//b1abs(int(-((daysafter( RelativeDate(ls_date_2, -integer(mid('6012345',mod(year(ls_date_2) -1 + int((year(ls_ date_2) -1)/4) - int((year(ls_date_2) -1)/100) + int((year(ls_date_2) -1)/400) + daysafter(date(year(ls_dat e_2),1,1),ls_date_2)+ 1,7) ,1))),ls_date_1)+1)/7)))//b2(使用DayNumber函数)abs(int(-((daysafter( RelativeDate(ls_date_2, -integer(mid('6012345',DayNumber(ls_date_2),1))),ls_date_1)+1) /7)))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:937 Select 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.157 Select CONVERT(varchar(100),GETDATE(),22): 05/16/06 10:57:47 AM Select 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.250 Select CONVERT(varchar(100),GETDATE(),100): 05 16 2006 10:57AM Select 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:513 Select CONVERT(varchar(100),GETDATE(),114): 10:57:49:547Select CONVERT(varchar(100),GETDATE(),120): 2006-05-16 10:57:49 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 常用: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。