【网学网提醒】:网学会员为广大网友收集整理了,SQL时间技巧,希望对大家有所帮助!
--后一天selectDATEADD(day,1,getdate())--前一天selectDATEADD(day,-1,getdate())--本周星期一SELECTDATEADD(dd,(case@@datefirstwhen7then2else2-@@datefirstend)-datepart(dw,getdate()),getdate())--本周星期日SELECTDATEADD(dd,6+(case@@datefirstwhen7then2else2-@@datefirstend)-datepart(dw,getdate()),getdate())--上周星期日SELECTDATEADD(day,-(@@datefirst+datepart(weekday,getdate())-1)%7,getdate())--格式化后的下周第一天SELECTconvert(char(10),(dateadd(dd,6+(case@@datefirstwhen7then2else2@@datefirstend)-datepart(dw,getdate()-1),getdate())),120)
--本月第一天SELECTDATEADD(mm,DATEDIFF(mm,0,getdate()),0)--下月第一天SELECTDATEADD(mm,DATEDIFF(mm,0,getdate())+1,0)--本月最后一天SELECTDATEADD(dd,-1,DATEADD(mm,1+DATEDIFF(mm,0,getdate()),0))--本季度第一天SELECTDATEADD(qq,DATEDIFF(qq,0,getdate()),0)--本年第一天SELECTDATEADD(yy,DATEDIFF(yy,0,getdate()),0)--下一年第一天SELECTDATEADD(yy,DATEDIFF(yy,0,getdate()+366),0)--格式化时间SELECTCONVERT(CHAR(10),getdate(),120)
说明:说明使用CONVERT::CONVERT(data_type[(length)],expression[,style])参数expression是任何有效的Microsoft?SQLServer?表达式。。data_type目标系统所提供的数据类型,包括bigint和sql_variant。不能使用用户定义的数据类型。lengthnchar、nvarchar、char、varchar、binary或varbinary数据类型的可选参数。style日期格式样式,借以将datetime或smalldatetime数据转换为字符数据(nchar、nvarchar、char、varchar、nchar或nvarchar数据类型);或者字符串格式样式,借以将float、real、money或smallmoney数据转换为字符数据(nchar、nvarchar、char、varchar、nchar或nvarchar数据类型)。SQLServer支持使用科威特算法的阿拉伯样式中的数据格式。在表中,左侧的两列表示将datetime或smalldatetime转换为字符数据的style值。给style值加100,可获得包括世纪数位的四位年份(yyyy)。
不带世纪数位(yy)带世纪数位(yyyy)标准输入/输出输入输出**输出
12345678-
0或100(*)1011021031041051061071089或109(*)
默认值美国ANSI英国/法国德国意大利默认值+毫秒
monddyyyyhh:miAM(或PM)mm/dd/yyyyyy.mm.dddd/mm/yydd.mm.yydd-mm-yyddmonyymondd,yyhh:mm:ssmonddyyyyhh:mi:ss:mmmAM(或PM)mm-dd-yyyy/mm/ddyymmddddmonyyyy
101112-
11011111213或113(*)
美国日本ISO欧洲默认值+毫
秒1411420或120(*)21或121(*)126(***)ODBC规范
hh:mm:ss:mmm(24h)hh:mi:ss:mmm(24h)yyyy-mm-ddhh:mm:ss[.fff]
ODBC规范(带毫yyyy-mm-dd秒)hh:mm:ss[.fff]ISO8601yyyy-mm-ddThh:mm:ss.mmm(不含空格)ddmonyyyyhh:mi:ss:mmmAMdd/mm/yyhh:mi:ss:mmmAM
-
130*131*
Hijri****Hijri****
*默认值(style0或100、9或109、13或113、20或120、21或121)始终返
回世纪数位(yyyy)。**当转换为datetime时输入;当转换为字符数据时输出。对于从datetime或smalldatetime到character数据的转换,***专门用于XML。输出格式如表中所示。对于从float、money或smallmoney到character数据的对于从real到character数据的转换,输出等同于style转换,输出等同于style2。1。****Hijri是具有几种变化形式的日历系统,Microsoft?SQLServer?2000使用其中的科威特算法。重要默认情况下,SQLServer根据截止年份2049解释两位数字的年份。即,重要两位数字的年份49被解释为2049,而两位数字的年份50被解释为1950。许多客户端应用程序(例如那些基于OLE自动化对象的客户端应用程序)都使用2030作为截止年份。SQLServer提供一个配置选项("两位数字的截止年份"),借以更改SQLServer所使用的截止年份并对日期进行一致性处理。然而最安全的办法是指定四位数字年份。当从smalldatetime转换为字符数据时,包含秒或毫秒的样式将在这些位置上显示零。当从datetime或smalldatetime值进行转换时,可以通过使用适当的char或varchar数据类型长度来截断不需要的日期部分。
DATEADD简介
在向指定日期加上一段时间的基础上,返回新的datetime值。
语法
DATEADD(datepart,number,date)
参数
datepart是规定应向日期的哪一部分返回新值的参数。下表列出了Microsoft?SQLServer?识别的日期部分和缩写。
日期部分YearquarterMonthdayofyearDayWeekHourminutesecondmillisecondyy,yyyyqq,qmm,mdy,ydd,dwk,wwhhmi,nss,sms缩写
number是用来增加datepart的值。如果指定一个不是整数的值,则将废弃此值的小数部分。例如,如果为datepart指定day,为number指定1.75,则date将增加1。date是返回datetime或smalldatetime值或日期格式字符串的表达式。如果您只指定年份的最后两位数字,则小于或等于"两位数年份截止期"配置选项的值的最后两位数字的数字所在世纪与截止年所在世纪相同。大于该选项的值的最后两位数字的数字所在世纪为截止年所在世纪的前一个世纪。例如,如果twodigityearcutoff为2049(默认)则49,被解释为2049,2050被解释为1950。为避免模糊,请使用四位数的年份。
返回类型
返回datetime,但如果date参数是smalldatetime,返回smalldatetime。,,。