sql convert函数使用小结

CONVERT(data_type,expression[,style]State of Qatarconvert(varchar(10卡塔尔,字段名,调换格式State of Qatar

注明:此体制日常在时刻等级次序(datetime,smalldatetime卡塔尔与字符串类型(nchar,nvarchar,char,varcharState of Qatar相互转换的时候才用到.

语句 结果SELECT CONVERT(varchar(100), GETDATE(), 0) 07 15 2009
4:06PMSELECT CONVERT(varchar(100), GETDATE(), 1) 07/15/09SELECT
CONVERT(varchar(100), GETDATE(), 2) 09.07.15SELECT CONVERT(varchar(100),
GETDATE(), 3) 15/07/09SELECT CONVERT(varchar(100), GETDATE(), 4)
15.07.09SELECT CONVERT(varchar(100), GETDATE(), 5) 15-07-09SELECT
CONVERT(varchar(100), GETDATE(), 6) 15 07 09SELECT CONVERT(varchar(100),
GETDATE(), 7) 07 15, 09SELECT CONVERT(varchar(100), GETDATE(), 8)
16:06:26SELECT CONVERT(varchar(100), GETDATE(), 9) 07 15 2009
4:06:26:513PMSELECT CONVERT(varchar(100), GETDATE(), 10) 07-15-09SELECT
CONVERT(varchar(100), GETDATE(), 11) 09/07/15SELECT
CONVERT(varchar(100), GETDATE(), 12) 090715SELECT CONVERT(varchar(100),
GETDATE(), 13) 15 07 2009 16:06:26:513SELECT CONVERT(varchar(100),
GETDATE(), 14) 16:06:26:513SELECT CONVERT(varchar(100), GETDATE(), 20)
2009-07-15 16:06:26SELECT CONVERT(varchar(100), GETDATE(), 21)
2009-07-15 16:06:26.513SELECT CONVERT(varchar(100), GETDATE(), 22)
07/15/09 4:06:26 PMSELECT CONVERT(varchar(100), GETDATE(), 23)
2009-07-15SELECT CONVERT(varchar(100), GETDATE(), 24) 16:06:26SELECT
CONVERT(varchar(100), GETDATE(), 25) 2009-07-15 16:06:26.513SELECT
CONVERT(varchar(100), GETDATE(), 100) 07 15 2009 4:06PMSELECT
CONVERT(varchar(100), GETDATE(), 101) 07/15/2009SELECT
CONVERT(varchar(100), GETDATE(), 102) 2009.07.15SELECT
CONVERT(varchar(100), GETDATE(), 103) 15/07/2009SELECT
CONVERT(varchar(100), GETDATE(), 104) 15.07.2009SELECT
CONVERT(varchar(100), GETDATE(), 105) 15-07-2009SELECT
CONVERT(varchar(100), GETDATE(), 106) 15 07 2009SELECT
CONVERT(varchar(100), GETDATE(), 107) 07 15, 2009SELECT
CONVERT(varchar(100), GETDATE(), 108) 16:06:26SELECT
CONVERT(varchar(100), GETDATE(), 109) 07 15 2009 4:06:26:513PMSELECT
CONVERT(varchar(100), GETDATE(), 110) 07-15-2009SELECT
CONVERT(varchar(100), GETDATE(), 111) 2009/07/15SELECT
CONVERT(varchar(100), GETDATE(), 112) 20090715SELECT
CONVERT(varchar(100), GETDATE(), 113) 15 07 2009 16:06:26:513SELECT
CONVERT(varchar(100), GETDATE(), 114) 16:06:26:513SELECT
CONVERT(varchar(100), GETDATE(), 120) 2009-07-15 16:06:26SELECT
CONVERT(varchar(100), GETDATE(), 121) 2009-07-15 16:06:26.513SELECT
CONVERT(varchar(100), GETDATE(), 126) 2009-07-15T16:06:26.513SELECT
CONVERT(varchar(100), GETDATE(), 130) 23 ??? 1430 4:06:26:513PMSELECT
CONVERT(varchar(100), GETDATE(), 131) 23/07/1430 4:06:26:513PM

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小时制State of Qatar————————————————————————————————————14
| 114 |
hh:mi:ss:mmm(24小时制卡塔尔国————————————————————————————————————20
| 120 ODBC 标准 | yyyy-mm-dd
hh:mi:ss(24小时制State of Qatar————————————————————————————————————21

| 121 | yyyy-mm-dd hh:mi:ss:mmm(24小时制)

说明:使用 CONVERT:

CONVERT ( data_type [ ( length ) ] , expression [ , style ] )

参数

expression

是别的有效的 Microsoft SQL Server 表明式。。

data_type

澳门金沙vip,指标连串所提供的数据类型,包含 bigint 和
sql_variant。不可能应用客商定义的数据类型。length

nchar、nvarchar、char、varchar、binary 或 varbinary 数据类型的可选参数。

style

日子格式样式,借以将 datetime 或 smalldatetime
数据调换为字符数据;大概字符串格式样式,借以将 float、real、money 或
smallmoney 数据转变为字符数据。

SQL Server 协理选择科威特算法的阿拉伯样式中的数据格式。

在表中,左边的两列表示将 datetime 或 smalldatetime 转变为字符数据的
style 值。给 style 值加 100,可获得包蕴世纪数位的几人年份 (yyyy卡塔尔。

不带世纪数位 (yy卡塔尔

带世纪数位 (yyyy卡塔尔

标准

输入/输出**

-0 或 100 (*) 默认值mon dd yyyy
hh:miAM1101美国mm/dd/yyyy2102ANSIyy.mm.dd3103英国/法国dd/mm/yy4104德国dd.mm.yy5105意大利dd-mm-yy6106-dd
mon yy7107-mon dd, yy8108-hh:mm:ss-9 或 109 (*) 默认值 + 毫秒mon dd
yyyy hh:mi:ss:mmmAM10110美国mm-dd-yy11111日本yy/mm/dd12112ISOyymmdd-13
或 113 (*卡塔尔国 北美洲暗中同意值 + 皮秒dd mon yyyy
hh:mm:ss:mmm(24h卡塔尔国14114-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(***)ISO8601yyyy-mm-dd
Thh:mm:ss.mmm-130*Hijri****dd mon yyyy
hh:mi:ss:mmmAM-131*Hijri****dd/mm/yy hh:mi:ss:mmmAM

* 暗中认可值始终重临世纪数位 (yyyy卡塔尔。** 当转变为
datetime时输入;当调换为字符数据时输出。*** 特地用于 XML。对于从
datetime或 smalldatetime 到 character
数据的转移,输出格式如表中所示。对于从 float、money 或 smallmoney 到
character 数据的调换,输出等同于 style 2。对于从 real 到 character
数据的转变,输出等同于 style 1。****Hijri
是具备三种变化情势的日历系统,Microsoft SQL Server 二〇〇二使用在那之中的科威特算法。

重中之重 默许意况下,SQL Server 根据甘休年份 2049
解释两位数字的年度。即,两位数字的年份 49 被解释为
2049,而两位数字的年份 50 被演讲为 壹玖肆柒。非常多客商端应用程序都使用 2030
作为完结年份。SQL Server 提供多个结构选项,借以改正 SQL Server
所使用的甘休年份并对日期实行一致性管理。但是最安全的措施是点名多少人数字年份。

当从 smalldatetime
转变为字符数据时,包罗秒或纳秒的体裁将要此些地方上海展览中心示零。当从 datetime
或 smalldatetime 值进行转变时,能够通过运用方便的 char 或 varchar
数据类型长度来截断无需的日子部分。

PS:结合datediff(State of Qatar函数用来比较时间专程有用。


  1. 现阶段系统日期、时间select getdate(卡塔尔(قطر‎

  2. dateadd 在向钦点日期加上一段时间的基本功上,再次来到新的 datetime
    值举个例子:向日期加上2天select dateadd(day,2,’二〇〇四-10-15’卡塔尔–再次来到:二零零三-10-17 00:00:00.000

  3. datediff 重返跨多个钦命日期的日子和岁月界限数。select
    datediff(day,’二零零四-09-01′,’二〇〇三-09-18’State of Qatar –再次来到:17

  4. datepart 重回代表钦点日期的钦定日期部分的大背头。SELECT DATEPART(month,
    ‘二零零一-10-15’卡塔尔(قطر‎ –重回 10

  5. datename 再次回到代表内定日期的内定日期部分的字符串SELECT
    datename(weekday, ‘二〇〇三-10-15’卡塔尔(قطر‎ –再次来到:周三

  6. day(卡塔尔国, month(卡塔尔(قطر‎,year(卡塔尔(قطر‎ –能够与datepart对照一下

select
当今天期=convert(varchar(10卡塔尔国,getdate(卡塔尔(قطر‎,120卡塔尔,当前时刻=convert(varchar(8卡塔尔国,getdate(卡塔尔(قطر‎,114State of Qatar

select datename(dw,’2004-10-15′)

select
上年第多少周=datename(week,’二〇〇一-10-15’卡塔尔(قطر‎,几日前是周几=datename(weekday,’二零零一-10-15’卡塔尔

函数 参数/功效 GetDate( 卡塔尔 重临系统当下的日期与时光 DateDiff
(interval,date1,date2卡塔尔(قطر‎ 以interval 钦点的措施,重回date2
与date1五个日子之间的差值 date2-date1 DateAdd (interval,number,date)以interval内定的不二等秘书技,加上number之后的日子 DatePart (interval,dateState of Qatar重回日期date中,interval钦赐部分所对应的整数值 DateName (interval,dateState of Qatar再次来到日期date中,interval钦定部分所对应的字符串名称

参数 interval的设定值如下:

值 缩 写 Access 和 ASP 说明 Year Yy yyyy 年 1753 ~ 9999 Quarter Qq q 季
1 ~ 4 Month Mm m 月1 ~ 12 Day of year Dy y 一年的日数,一年中的第几日
1-366 Day Dd d 日,1-31 Weekday Dw w 29日的日数,一周中的第几日 1-7 Week
Wk ww 周,一年中的第几周 0 ~ 51 Hour Hh h 时0 ~ 23 Minute Mi n 分钟0 ~
59 Second Ss s 秒 0 ~ 59 Millisecond Ms – 毫秒 0 ~ 999

access 和 asp
中用date(卡塔尔和now(卡塔尔(قطر‎得到系统日期时间;在那之中DateDiff,DateAdd,DatePart也同是能用于Access和asp中,这一个函数的用法也近乎

举例:1.GetDate() 用于sql server :select GetDate()

2.DateDiff(‘s’,’二〇〇七-07-20′,’2007-7-25 22:56:32’State of Qatar重返值为 514592
秒DateDiff(‘d’,’二〇〇七-07-20′,’2006-7-25 22:56:32’State of Qatar重回值为 5 天

3.DatePart(‘w’,’二零零五-7-25 22:56:32’卡塔尔国重临值为 2
即星期三(周天为1,周日为7卡塔尔(قطر‎DatePart(‘d’,’二零零七-7-25 22:56:32’State of Qatar再次来到值为
25即25号DatePart(‘y’,’二〇〇六-7-25 22:56:32’卡塔尔国重回值为
206即这个时候中第206天DatePart(‘yyyy’,’2007-7-25 22:56:32’State of Qatar重返值为
二零零五即二零零五年

SQL Server DATEPART(State of Qatar 函数重返 SQLServer datetime 字段的一有个别。

SQL Server DATEPART(State of Qatar 函数的语法是: DATEPART(portion, datetime卡塔尔在那之中datetime 是 SQLServer datetime 字段和有些的称谓是下列之一: Ms for
MillisecondsYy for YearQq for Quarter of the YearMm for MonthDy for the
Day of the YearDd for Day of the MonthWk for WeekDw for the Day of the
WeekHh for HourMi for MinuteSs for Second

详细的认证:

索然无味,你须求取妥当明日子和总结一些其余的日期,举个例子,你的主次大概须要看清一个月的第一天也许最后一天。你们超越八分之四人民代表大会致都掌握怎么着把日子举办剪切,然后仅仅用分割出来的年、月、日等位居多少个函数中总计出本身所要求的日期!在这里篇文章里,笔者将报告您什么样使用DATEADD和
DATEDIFF函数来总括出在你的次序中只怕您要用到的一部分两样日期。
在动用本文中的例子以前,你必需小心以下的主题材料。大多数大概不是独具例子在分歧的机器上进行的结果恐怕不周围,那全然由曾几何时是五个星期的首后天那么些设置决定。第一天设定调控了您的系统利用曾几何时作为一周的首先天。全部以下的事例都以以星期六看成七日的率后天来树立,也正是第一天设置为7。假令你的首先天设置不相通,你大概供给调度那么些事例,使它和莫衷一是的第一天设置相切合。你能够因此@@DATEFIEvoqueST函数来检查第一天设置。

为了驾驭这几个事例,大家先复习一下DATEDIFF和DATEADD函数。DATEDIFF函数总结五个日子之间的小时、天、周、月、年等时间间隔总的数量。
DATEADD函数总括一个日子通过给时间隔开加减来得到贰个新的日子。要询问更多的DATEDIFF和DATEADD函数以至时光间距能够阅读微软联机扶持。

接收DATEDIFF和DATEADD函数来计算日期,和自然从脚下日期调换来你必要的日子的思量方法有个别不一致。你必需从时间隔离那么些下边来考虑。比如,从方今些天子到你要拿走的日期之间有微微日子间距,可能,从明天到某一天以内某些许时间距离,等等。精通什么入眼于岁月间距有利于你轻便的理解本身的差别的日子总括例子。

一个月的第一天

率先个例子,作者将告诉你如何自一时日子去当月的末段一天。请在乎:这几个事例以致那篇散文中的别的例子都将只利用DATEDIFF和DATEADD函数来计量大家想要的日期。每三个例证都将透过测算但前的小运间距,然后开展加减来得到想要计算的日期。

那是计算三个月第一天的SQL 脚本: SELECT DATEADD(mm,
DATEDIFF(mm,0,getdate(卡塔尔(قطر‎卡塔尔, 0卡塔尔国

咱俩把那几个讲话分开来探访它是什么样行事的。最基本的函数是getdate(卡塔尔国,超越一半人都知情那几个是回去当前的日期和时间的函数。下贰个实行的函数
DATEDIFF(mm,0,getdate(卡塔尔国卡塔尔(قطر‎是计算当几天前子和“1903-01-01
00:00:00.000”这一个日子之间的月数。记住:时代和时间变量和飞秒相仿是从“一九零五-01-01
00:00:00.000”起初思谋的。那正是怎么你能够在DATEDIFF函数中内定第贰个时刻表达式为“0”。下二个函数是DATEADD,增添当前不久子到“一九〇三-01-01”的月数。通过扩大预订义的日期“壹玖零贰-01-01”和当下日子的月数,大家得以获得下个月的率后天。其余,计算出来的日期的年华某些将会是“00:00:00.000”。

本条总括的才具是先总结当前几日期到“1901-01-01”的时光间距数,然后把它加到“一九〇三-01-01”上来得到特其余日期,这么些本领能够用来测算非常多不一的日期。下叁个事例也是用那些手艺从眼后日子来爆发区别的日期。

本周的周五

这边笔者是用周(wkState of Qatar的时光间隔来估测计算哪天是本周的星期五。

SELECT DATEADD(wk, DATEDIFF(wk,0,getdate()), 0)

一年的第一天

后天用年(yy卡塔尔国的时间隔离来体现这年的首后天。

SELECT DATEADD(yy, DATEDIFF(yy,0,getdate()), 0)

季度的第一天

尽管你要总计这些季度的首后天,这几个例子告诉您该怎么办。

SELECT DATEADD(qq, DATEDIFF(qq,0,getdate()), 0)

同一天的早晨

业已必要经过getdate(State of Qatar函数为了重返时间值截掉时间部分,就能思虑到眼今日子是或不是在早上。假使那样,这几个事例使用DATEDIFF和DATEADD函数来收获半夜的时间点。

SELECT DATEADD(dd, DATEDIFF(dd,0,getdate()), 0)

深远DATEDIFF和DATEADD函数总括

您能够驾驭,通过行使简易的DATEDIFF和DATEADD函数总结,你能够开采众多分歧的大概有含义的日子。

近期甘休的有着例子只是独自总计当前的小时和“1902-01-01”之间的小时间距数量,然后把它加到“1903-01-01”的时刻间距上来计算出日期。假定你改改时间间距的数额,恐怕选拔不一样的日子间距来调用DATEADD函数,或许减弱时间间隔并不是扩大,那么通过那些小的调动你能够窥见和多差异的日期。

此地有四个例子使用此外三个DATEADD函数来估测计算最终一天来分别替换DATEADD函数前后八个时间隔离。

上三个月的末段一天

那是二个划算上一个月最后一天的例证。它通过从二个月的最终一天这么些例子上缩短3飞秒来赢得。有几许要铭记在心,在Sql
Server中时间是纯正到3皮秒。那正是为啥本身要求收缩3微秒来博取自身要的日子和岁月。

SELECT dateadd(ms,-3,DATEADD(mm, DATEDIFF(mm,0,getdate()), 0))

计算出来的日子的年月某个含有了二个Sql
Server可以记录的一天的末段每14日(“23:59:59:997”卡塔尔的时间。

去年的结尾一天

一而再上面的例证,为了要获取二〇一八年的末段一天,你须要在二零一八年的率后天上压缩3微秒。

SELECT dateadd(ms,-3,DATEADD(yy, DATEDIFF(yy,0,getdate()), 0))

前段时代的尾声一天

前几天,为了获得前一个月的末梢一天,小编索要多少矫正一下获得后3个月的结尾一天的讲话。修正必要给用DATEDIFF相比较当几日前子和“一九零二-01-01”重返的岁月间距上加1。通过加1个月,小编总结出本月的首后天,然后减去3纳秒,那样就总括出了前一个月的末段一天。那是测算上一个月末了一天的SQL脚本。

SELECT dateadd(ms,-3,DATEADD(mm, DATEDIFF(m,0,getdate())+1, 0))

今年的最终一天

您未来应有通晓那个的做法,这是计算下半年最后一天脚本

SELECT dateadd(ms,-3,DATEADD(yy, DATEDIFF(yy,0,getdate())+1, 0))

上个月的率先个礼拜二

好了,今后是最终四个例子。这里笔者要计算下个月的第八个星期五,那是总结的剧本。

select DATEADD(wk,
DATEDIFF(wk,0,dateadd(dd,6-datepart(day,getdate()),getdate())), 0)