结构化查询语言转换函数使用方法小结整理的比较全了,需要的朋友可以参考下。
CONVERT(data_type,expression[,style]) convert(varchar(10),字段名,转换格式)
说明:此样式一般在时间类型(日期时间,小日期时间)与字符串类型(nchar、nvarchar、char、varchar)相互转换的时候才用到。
语句结果SELECT CONVERT(varchar(100),GETDATE(),0)07 15 2009下午4:06 SELECT CONVERT(varchar(100),GETDATE(),1)07/15/09 SELECT CONVERT(varchar(100),GETDATE(),2)09。07 .15 SELECT CONVERT(varchar(100),GETDATE(),3)15/07/09 SELECT CONVERT(varchar(100),GETDATE(),4)15。07 .09 SELECT CONVERT(varchar(varchar(100),GETDATE(),22)07/15/09下午4:06:26 SELECT CONVERT(varchar(100),GETDATE(),23)2009-07-15 SELECT CONVERT(varchar(100),GETDATE(),24)16:06:26 SELECT CONVERT(varchar(100),GETDATE(),25)111)2009/07/15 SELECT CONVERT(var?1430下午4:06:26:513 select CONVERT(varchar(100),GETDATE(),131) 23/07/1430下午4:06:26:513
风格数字在转换时间时的含义如下:
- .输出格式。YY-2 | 102 ANSI | YY-MM-DD-DD-DD-YY-MM-DD-DD-DD-DD-YY-MM-DD-DD-DD-DD-DD-DD-DD-DD-YY-MM-DD-DD-DD-DD-DD-DD-DD-DD-DD-DD-DD-DD-DD-DD-DD-DD-DD-DD-DD-DD-DD-DD-DD-DD-DD-DD-DD-DD-DD-DD-DD-DD-DD-YY-YY-YY-YY-YY-YY-YY-YY-YY-YY-YY-YY-YY-YY-YY-YY-YY-YY-YY-YYDD。YY。DD-MM-YY-6 | 106 | DD mon YY-7 | 107 | mon DD,YY-8 | 108 | HH:MM:SS-9 | 109 | DD YYYYY HH:MI:SS:MMMM AM(或PM) - 10美国| MM-DD-YY -。dd - 12 | 112 ISO | MMDD -。Dd mon yyyy hh:mi:ss:mmm(24小时制)- Hh:mi:ss:mmm(24小时制)- YY-MM-DD HH: MI: SS (24小时制)-。YY-毫米-日时:分:秒:嗯(24小时制)-。
描述:使用转换:
CONVERT(数据类型[(长度)],表达式[,样式])
参数
表示
任何有效的Microsoft SQL Server表达式。
数据类型
目标系统提供的数据类型,包括bigint和sql_variant。不能使用用户定义的数据类型。长度
nchar、nvarchar、char、varchar、binary或varbinary数据类型的可选参数。
风格
日期格式样式,将datetime或smalldatetime数据转换为字符数据(nchar、nvarchar、char、varchar、nchar或nvarchar数据类型);或字符串格式样式,以便将浮点、实数、货币或小额货币数据转换成字符数据(nchar、nvarchar、char、varchar、nchar或nvarchar数据类型)。
SQL Server支持使用科威特算法的阿拉伯风格的数据格式。
在表中,左边的两列表示将datetime或smalldatetime转换为字符数据的样式值。将style值加上100,得到包含世纪数字的四位数年份(yyyy)。
不带世纪数字(yy)
带世纪数字(yyyy)
标准
输入/输出* *
-
0或100 (*)
系统默认值
年月日时:MIAM(或下午)
一个
101
美利坚合众国
年/月/日
2
102
美国国家标准学会
年月日
三
103
英国/法国
日/月/年
四
104
德国
年月日
五
105
意大利
年月日
六
106
-
日月日
七
107
-
年月日
八
108
-
时:分:秒
-
9或109 (*)
毫秒默认值
年月日时:分:秒:MMMM(或下午)
10
110
美利坚合众国
年月日
11
111
日本
年月日
12
112
国际标准化组织
yymmdd
-
3或113 (*)
欧洲默认毫秒
日周一年时:分:秒:嗯(24小时制)
14
114
-
时:分:秒:嗯(24小时制)
-
20或120 (*)
Norm ODBC
yyyy-mm-dd hh:mm:ss[。fff]
-
1或121 (*)
ODBC规范(毫秒)
yyyy-mm-dd hh:mm:ss[。fff]
-
126(***)
ISO8601
Yyy-mm-ddthh: mm: ss.mmm(不带空格)
-
130*
回历****
dd mon yyyy hh:mi:ss:mmmAM
-
131*
回历****
日/月/年时:分:秒:分
*默认值(样式0或100、9或109、13或113、20或120、21或121)始终返回世纪数字(yyyy)。* *转换为日期时间时的输入;转换成字符数据时输出。* * *专用于XML。对于从datetime或smalldatetime到字符数据的转换,输出格式如下表所示。对于从float、money或smallmoney到字符数据的转换,输出相当于style 2。对于从实数到字符数据的转换,输出相当于style 1。* * * *回历是一种有多种变化的日历系统,Microsoft SQL Server 2000使用科威特算法。
默认情况下,SQL Server根据2049年的结束年份来解释两位数的年份。即两位数的年份49解释为2049,两位数的年份50解释为1950。许多客户端应用程序(如基于OLE自动化对象的应用程序)将2030年作为截止日期。SQL Server提供了一个配置选项(“两位数的截止年份”)来更改SQL Server使用的截止年份并一致地处理日期。但是,最安全的方法是指定一个四位数的年份。
从smalldatetime转换为字符数据时,包含秒或毫秒的样式将在这些位置显示零。从datetime或smalldatetime值转换时,可以通过使用适当的char或varchar数据类型长度来截断不必要的日期部分。
PS:结合datediff()函数比较时间特别有用。
-
1.当前系统日期和时间选择getdate()
2.dateadd基于向指定日期添加一段时间返回新的datetime值。例如,在日期Select DateAdd (day,2,' 2004年10月15日')-return:2004年10月17日00: 00: 00.000中添加2天
3.datediff返回跨越两个指定日期的日期和时间界限数。Select diff(日期,' 2004-09-01 ',' 2004-09-18 ')-返回:17
4.datepart返回一个整数,表示指定日期的指定日期部分。选择部分(月份,“2004年10月15日”)-返回10
5.datename返回表示指定日期部分的字符串SELECT DATeName (WEEKDAY,' 2004-10-15 ')-return:Friday
6.日()、月()、年()-您可以将它与datepart进行比较
Select当前日期=convert (varchar (10),getdate(),120),当前时间=convert (varchar (8),getdate(),114)
选择日期名称(日期,“2004-10-15”)
选择今年的星期=datename(星期,“2004年10月15日”),选择今天的日期=datename(星期几,“2004年10月15日”)
参数/函数GetDate()返回系统DateDiff (interval,date1,date2)的当前日期和时间。以interval指定的方式返回date2和date1的差date2-date1 dateadd (interval,number,date)以interval指定的方式,在number之后加上date,datePart (interval,date)返回日期,interval指定部分对应的整数值DateName (interval,Date)返回interval指定部分对应的字符串名称。
参数间隔的设定值如下:
缩写(Sql Server)访问和ASP描述年Yy yyyy年1753 ~ 9999季Qq q季1 ~ 4月MM月1 ~ 12日年Dy y日,年1-366日Dd d日,1-31工作日Dw星期几,星期几1-7星期Wk ww星期几,年中星期几0 ~ 51小时Hh h 0 ~ 23分钟Mi n 0 ~ 59秒s s 0 ~ 59毫秒0 ~ 999。
在access和asp中用date()和now()获取系统日期和时间;DateDiff、DateAdd和DatePart也可以用在Access和asp中,这些函数的用法是类似的。
举例:1。sql server中使用了GetDate():select GetDate()
2.DateDiff ('s ',' 2005-07-20 ',' 2005-07-25 22: 56: 32 ')得出514592秒的值DateDiff ('d ',' 2005-07-20 ',' 2005-07-32 ')
3.DatePart ('W ',' 2005-7-25 22: 56: 32 ')返回值2,即星期一(星期日是1,星期六是7) DatePart ('D ',' 2005-7-25 22: 56: 32 ')返回值25,即日期部分第25号(。2005-7-25 22: 56: 32 '),返回值为206,即一年中的第206天DatePart ('yyyy ',' 2005-7-25 22:56:32 '),返回值为2005,即2005。
sqldatepart()函数返回SQLServer日期时间字段的一部分。
sqldatepart()函数的语法是:datepart (part,datetime ),其中datetime是SQLServer datetime字段,并且该部分的名称是以下之一:ms代表百万代表一年代表一年中的第四个季度,QQ代表一年中的第mm代表一个月,dy代表一年中的第DD代表一天。y表示一周中的第几天,Hh表示小时,Mi表示分钟,Ss表示秒
详细描述:
通常,您需要获取当前日期并计算一些其他日期。例如,您的程序可能需要判断一个月的第一天或最后一天。你们大多数人可能知道如何划分日期(年、月、日等。),然后就用分好的年、月、日等。在几个函数中计算出你需要的日期!在本文中,我将告诉您如何使用DATEADD和DATEDIFF函数来计算一些您可能在程序中使用的不同日期。在使用本文中的示例之前,您必须注意以下问题。大部分的例子可能不会在不同的机器上执行,结果也可能不同,这完全是由星期几是星期几的设置决定的。第一天设置决定了系统将哪一天作为一周的第一天。以下所有示例都基于星期日作为一周的第一天,即第一天设置为7。如果您的第一天设置不同,您可能需要调整这些示例,使它们符合不同的第一天设置。您可以通过@@DATEFIRST函数检查第一天的设置。
为了理解这些例子,让我们先回顾一下DATEDIFF和DATEADD函数。DATEDIFF函数计算两个日期之间的时间间隔总数,如小时、天、周、月和年。DATE函数计算一个日期,通过加上或减去时间间隔得到一个新的日期。若要了解DATEDIFF和DATEADD函数以及时间间隔的详细信息,可以阅读Microsoft联机帮助。
使用DATEDIFF和DATEADD函数计算日期与最初的从当前日期转换到所需日期的考虑方法略有不同。你必须考虑时间间隔。比如当前日期和你想要得到的日期之间有多少时间间隔,或者今天和某一天(比如1900年1月1日)之间有多少时间间隔等等。了解如何关注时间间隔将有助于您轻松理解我的不同日期计算示例。
一个月的第一天
对于第一个例子,我将告诉你如何从当前日期到这个月的最后一天。请注意:这个例子和本文中的其他例子将只使用DATEDIFF和DATEADD函数来计算我们想要的日期。在每个例子中,要计算的日期将通过计算之前的时间间隔,然后加减得到。
这是计算一个月的第一天的SQL脚本:select dateadd (mm,datediff (mm,0,getdate()),0)
让我们把这个语句分开来看看它是如何工作的。核心函数是getdate(),大多数人都知道它是一个返回当前日期和时间的函数。下一个执行的函数DATEDIFF(mm,0,getdate())将计算当前日期和日期“1900-01-01 00:00:00.000”之间的月数。记住:周期和时间变量是从“1900-01-01 00:00:00.000”开始计算的,就像毫秒一样。这就是为什么可以在DATEDIFF函数中将第一个时间表达式指定为“0”。下一个函数是DATEADD,它将当前日期的月数增加到“1900-01-01”。通过增加预定义的日期“1900-01-01”和当前日期的月数,我们可以得到这个月的第一天。此外,计算日期的时间部分将是“00:00:00.000”。
这个计算的技巧是先计算出当前日期与“1900-01-01”之间的时间间隔数,再加上“1900-01-01”得到一个特殊的日期。这项技能可以用来计算许多不同的日期。下一个示例也使用这种技术从当前日期生成不同的日期。
本周一
在这里,我使用周的间隔(wk)来计算哪一天是本周的星期一。
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()函数截断时间部分以返回时间值,它将考虑当前日期是否在午夜。在这种情况下,此示例使用DATEDIFF和DATEADD函数来获取午夜时间。
SELECT DATEADD(dd,DATEDIFF(dd,0,getdate()),0)
DATEDIFF和DATEADD函数的深入计算
您可以看到,通过使用简单的DATEDIFF和DATEADD函数,可以找到许多可能有意义的不同日期。
到目前为止,所有的示例都只是计算当前时间与“1900-01-01”之间的时间间隔数,然后将其添加到“1900-01-01”的时间间隔中来计算日期。假设你修改时间间隔的个数,或者用不同的时间间隔调用DATEADD函数,或者减去时间间隔而不是增加时间间隔,通过这些小的调整,你可以找到很多不同的日期。
下面是四个示例,它们使用另一个DATEADD函数来计算最后一天,以替换DATEADD函数前后的两个时间间隔。
上月的最后一天
这是一个计算上月最后一天的例子。它是从一个月的最后一天的例子中减去3毫秒得到的。需要记住的一点是,在Sql Server中,时间精确到3毫秒。这就是为什么我需要减去3毫秒来得到我想要的日期和时间。
SELECT dateadd(ms,-3,DATEADD(mm,DATEDIFF(mm,0,getdate()),0))
计算日期的时间部分包含Sql Server可以记录的一天中最后一刻的时间(“23:59:59:997”)。
去年的最后一天
在上面的例子中,为了得到去年的最后一天,需要从今年的第一天减去3毫秒。
SELECT dateadd(ms,-3,DATEADD(yy,DATEDIFF(yy,0,getdate()),0))
这个月的最后一天
现在,为了得到这个月的最后一天,我需要稍微修改一下得到上个月最后一天的语句。修改需要在DATEDIFF将当前日期与“1900-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)
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。