首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 开源 FAQ 第二书店 博文视点 程序员
频道: 研发 数据库 中间件 信息化 视频 .NET Java 游戏 移动 服务: 人才 外包 培训
    图书品种:235680
       
热门搜索: ASP.NET Ajax Spring Hibernate Java

2.2.4  其他日期处理相关函数

其他常用的日期处理相关函数包括以下几个。

1  GETDATE

GETDATE按照datetime值返回当前系统日期和时间。

GETDATE的语法如下:

GETDATE()

返回类型:datetime

2  ISDATE

ISDATE确定输入的表达式是否有效日期。

在输入日期表达式时,日期都是以日期格式的字符串提供的,由于不同的区域有不同的日期格式,所以并不能保证输入的日期表达式能够被SQL Server识别,这种情况下,就需要用ISDATE来判断日期表达式能否正确地被SQL Server识别了。

ISDATE的语法如下:

ISDATE(expression)

返回类型:int

3  CONVERT

CONVERT将某种数据类型的表达式显式转换为另一种数据类型。

严格来说,CONVERT不属于日期处理函数,只是它被经常用于日期处理中,所以这里把它列入了其他日期处理函数,下面是CONVERT的用法描述(只重点说明在日期处理中的应用)。

CONVERT的具体语法如下:

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

其中包括以下参数。

¡  expression:是要转换数据类型的有效SQL Server表达式。

¡  data_type:是expression转换后的数据类型,length是对于有精度定义需要的data_type的精度定义,对于没有精度定义需要的data_type,该参数可以省略。

¡  style:定义数据类型转换时的格式,对于日期类型的转换,它的定义如表2-4所示。

2-4                          style在日期转换中的说明

不带世纪数位

带世纪数位

  标准

  输入/输出

 

0100

默认值

mon dd yyyy hh:miAM( PM)

1

101

美国

mm/dd/yyyy

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

9109

默认值+毫秒

mon dd yyyy hh:mi:ss:mmmAM(PM)

10

110

美国

mm-dd-yy

11

111

日本

yy/mm/dd

12

112

ISO

yymmdd

13113

欧洲默认值+毫秒

dd mon yyyy hh:mm:ss:mmm(24h)

14

114

hh:mi:ss:mmm(24h)

20120

ODBC规范

yyyy-mm-dd hh:mm:ss[.fff]

21121

ODBC规范(带毫秒)

yyyy-mm-dd hh:mm:ss[.fff]

126

ISO8601

yyyy-mm-ddThh:mm:ss.mmm

130

Hijri

dd mon yyyy hh:mi:ss:mmmAM

131

Hijri

dd/mm/yy hh:mi:ss:mmmAM

 

注释:

  输入/输出:“输入”表示从字符串转换为日期时字符串的日期格式,“输出”指从日期转换为字符串时的日期字符串格式。

  Hijri:是具有几种变化形式的日历系统,SQL Server使用其中的科威特算法。

当从smalldatetime转换为字符数据时,由于smalldatetimer只保存到分钟的数据,因此,对于包含秒或毫秒的样式,将在秒或毫秒的位置上显示零。当从datetimesmalldatetime值进行转换时,可以通过使用适当的charvarchar数据类型长度来截断不需要的日期部分。

注意:在SQL Server中,由于直接提供的日期均是以日期格式的字符串提供,所以在使用CONVERT进行日期格式转换时,要先把日期格式的字符串转换为日期型,然后才能利用CONVERT进行日期格式转换,否则就变成字符串转换为字符串,此时的style选项是无效的。

返回类型:由参数data_type确定。

下面是利用CONVERT进行日期转换的简单示例:

/*== 字符转换为日期时,Style的使用 ==*/

--1. Style=101,表示日期字符串为:mm/dd/yyyy格式

SELECT CONVERT(datetime,'11/1/2003',101)

--结果:2003-11-01 00:00:00.000

 

--2. Style=101,表示日期字符串为:dd/mm/yyyy格式

SELECT CONVERT(datetime,'11/1/2003',103)

--结果:2003-01-11 00:00:00.000

 

 

/*== 日期转换为字符串 ==*/

DECLARE @dt datetime

SET @dt='2003-1-11'

 

--1. Style=101,表示将日期转换为:mm/dd/yyyy 格式

SELECT CONVERT(varchar,@dt,101)

--结果:01/11/2003

 

--2. Style=103,表示将日期转换为:dd/mm/yyyy 格式

SELECT CONVERT(varchar,@dt,103)

--结果:11/01/2003

 

 

/*== 这是很多人经常犯的错误,对非日期型转换使用日期的style样式 ==*/

SELECT CONVERT(varchar,'2003-1-11',101)

--结果:2003-1-11

查看所有评论(0)条】

最近评论



正在载入评论列表...
热点评论