问个sql的紧急问题,TO_DAYS,TIME_TO_SEC

时间:2022-04-02 19:10:07
在 sql 下 有没有和 mysql 下TO_DAYS,TIME_TO_SEC 功能相同的函数?
我急需这样的方法, 请大家帮忙, 只要能得到相同结果的任何方法都可以~!

6 个解决方案

#1


是这个吗??


将某种数据类型的表达式显式转换为另一种数据类型。由于某些需求经常用到取日期格式的不同.现以下可在
SQL Server中 将日期格式化.

SQL Server 支持使用科威特算法的阿拉伯样式中的数据格式。

在表中,左侧的两列表示将 datetime 或 smalldatetime 转换为字符数据的 style 值。给 style 值加 100,可获得包括世纪数位的四位年份 (yyyy)。

不带世纪数位 (yy)  带世纪数位 (yyyy) 
标准 
输入/输出**
-  0 或 100 (*)  默认值  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
-  9 或 109 (*)  默认值 + 毫秒  mon dd yyyy hh:mi:ss:mmmAM(或 PM)
10  110  美国  mm-dd-yy
11  111  日本  yy/mm/dd
12  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:mmmAM

*    默认值(style 0 或 100、9 或 109、13 或 113、20 或 120、21 或 121)始终返回世纪数位 (yyyy)。
** 当转换为 datetime 时输入;当转换为字符数据时输出。
*** 专门用于 XML。对于从 datetime 或 smalldatetime 到 character 数据的转换,输出格式如表中所示。对于从 float、money 或 smallmoney 到 character 数据的转换,输出等同于 style 2。对于从 real 到 character 数据的转换,输出等同于 style 1。

重要   默认情况下,SQL Server 根据截止年份 2049 解释两位数字的年份。即,两位数字的年份 49 被解释为 2049,而两位数字的年份 50 被解释为 1950。许多客户端应用程序(例如那些基于 OLE 自动化对象的客户端应用程序)都使用 2030 作为截止年份。SQL Server 提供一个配置选项("两位数字的截止年份"),借以更改 SQL Server 所使用的截止年份并对日期进行一致性处理。然而最安全的办法是指定四位数字年份。

 

当从 smalldatetime 转换为字符数据时,包含秒或毫秒的样式将在这些位置上显示零。当从 datetime 或 smalldatetime 值进行转换时,可以通过使用适当的 char 或 varchar 数据类型长度来截断不需要的日期部分。

下表显示了从 float 或 real 转换为字符数据时的 style 值。

值  输出
0(默认值)  最大为 6 位数。根据需要使用科学记数法。
1  始终为 8 位值。始终使用科学记数法。
2  始终为 16 位值。始终使用科学记数法。

在下表中,左列表示从 money 或 smallmoney 转换为字符数据时的 style 值。

值  输出
0(默认值)  小数点左侧每三位数字之间不以逗号分隔,小数点右侧取两位数,例如 4235.98。
1  小数点左侧每三位数字之间以逗号分隔,小数点右侧取两位数,例如 3,510.92。
2  小数点左侧每三位数字之间不以逗号分隔,小数点右侧取四位数,例如 4235.9819。

使用 CONVERT:

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


select CONVERT(varchar, getdate(), 120 )
2004-09-12 11:06:08

select replace(replace(replace(CONVERT(varchar, getdate(), 120 ),\'-\',\'\'),\' \',\'\'),\':\',\'\')
20040912110608

select CONVERT(varchar(12) , getdate(), 111 )
2004/09/12

select CONVERT(varchar(12) , getdate(), 112 )
20040912

select CONVERT(varchar(12) , getdate(), 102 )
2004.09.12

select CONVERT(varchar(12) , getdate(), 101 )
09/12/2004

select CONVERT(varchar(12) , getdate(), 103 )
12/09/2004

select CONVERT(varchar(12) , getdate(), 104 )
12.09.2004

select CONVERT(varchar(12) , getdate(), 105 )
12-09-2004

select CONVERT(varchar(12) , getdate(), 106 )
12 09 2004

select CONVERT(varchar(12) , getdate(), 107 )
09 12, 2004

select CONVERT(varchar(12) , getdate(), 108 )
11:06:08

select CONVERT(varchar(12) , getdate(), 109 )
09 12 2004 1

select CONVERT(varchar(12) , getdate(), 110 )
09-12-2004

select CONVERT(varchar(12) , getdate(), 113 )
12 09 2004 1

select CONVERT(varchar(12) , getdate(), 114 )
11:06:08.177

#2



应该就是楼上的吧

#3


CAST 和 CONVERT
将某种数据类型的表达式显式转换为另一种数据类型。CAST 和 CONVERT 提供相似的功能。

语法
使用 CAST:

CAST ( expression AS data_type ) 

使用 CONVERT:

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

参数
expression

是任何有效的 Microsoft® SQL Server™ 表达式。有关更多信息,请参见表达式。 

data_type

目标系统所提供的数据类型,包括 bigint 和 sql_variant。不能使用用户定义的数据类型。有关可用的数据类型的更多信息,请参见数据类型。 

length

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

style

日期格式样式,借以将 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)。

#4


TIME_TO_SEC 实际上是指计算指定时间的秒数,它是个段时间,不是点时间。
楼上写的convert实际上得到的还是点时间(即时刻值)的字串形式。


sqlserver datetime的存储就是存的段,以初始时间 1753-1-1 00:00:00.000 加上时间段,以int型存储.

在.net中实际上就是ticks值,也即timespan.  比如 
timespan t=d1-d2l;
int x = t.totalseconds;
(上面随手敲的,可能手误)


比如

TIME_TO_SEC('00:00:38') 实际上得到38
TIME_TO_SEC('00:01:38') 得到 98

它将时间点与00:00:00 进行比较得到时差,也中ticks值。


而在sqlserver中算的话,与mysql比起来没有直接对等的函数, 不过可以用datediff来实现


declare @d datetime
set @d='00:05:01.000'  --当没有日期部分时,会默认以1900-1-1开始
select datediff(ss,'1900-1-1',@d)

#5


A. 同时使用 CAST 和 CONVERT
每个示例都将检索书名(这些图书的截止当前销售额的第一位数字为 3),并将这些图书的 ytd_sales 转换为 char(20)。

-- Use CAST.
USE pubs
GO
SELECT SUBSTRING(title, 1, 30) AS Title, ytd_sales
FROM titles
WHERE CAST(ytd_sales AS char(20)) LIKE '3%'
GO

-- Use CONVERT.
USE pubs
GO
SELECT SUBSTRING(title, 1, 30) AS Title, ytd_sales
FROM titles
WHERE CONVERT(char(20), ytd_sales) LIKE '3%'
GO

下面是任一查询的结果集:

Title                          ytd_sales   
------------------------------ ----------- 
Cooking with Computers: Surrep 3876        
Computer Phobic AND Non-Phobic 375         
Emotional Security: A New Algo 3336        
Onions, Leeks, and Garlic: Coo 375         

(4 row(s) affected)

B. 使用带有算术运算符的 CAST
下面的示例通过将总的截止当前销售额 (ytd_sales) 与每本图书的价格 (price) 相除,进行单独列计算 (Copies)。在四舍五入到最接近的整数后,此结果将转换为 int 数据类型。 

USE pubs
GO
SELECT CAST(ROUND(ytd_sales/price, 0) AS int) AS 'Copies'
FROM titles
GO

下面是结果集:

Copies      
------ 
205         
324         
6262        
205         
102         
7440        
NULL        
383         
205         
NULL        
17          
187         
16          
204         
418         
18          
1263        
273         

(18 row(s) affected)

C. 使用 CAST 进行串联
下面的示例使用 CAST 数据类型转换函数来串联非字符、非二进制表达式。

USE pubs
GO
SELECT 'The price is ' + CAST(price AS varchar(12))
FROM titles
WHERE price > 10.00
GO

下面是结果集:

------------------ 
The price is 19.99        
The price is 11.95        
The price is 19.99        
The price is 19.99        
The price is 22.95        
The price is 20.00        
The price is 21.59        
The price is 10.95        
The price is 19.99        
The price is 20.95        
The price is 11.95        
The price is 14.99        

(12 row(s) affected)

D. 使用 CAST 获得更多易读文本
下面的示例在选择列表中使用 CAST 将 title 列转换为 char(50) 列,这样结果将更加易读。

USE pubs
GO
SELECT CAST(title AS char(50)), ytd_sales
FROM titles
WHERE type = 'trad_cook'
GO

下面是结果集:

                                                       ytd_sales
--------------------------------------------------     ---------
Onions, Leeks, and Garlic: Cooking Secrets of the      375
Fifty Years in Buckingham Palace Kitchens              15096
Sushi, Anyone?                                         4095

(3 row(s) affected)

E. 使用带有 LIKE 子句的 CAST
下面的示例将 int 列(ytd_sales 列)转换为 char(20) 列,以便使用 LIKE 子句。

USE pubs
GO
SELECT title, ytd_sales
FROM titles
WHERE CAST(ytd_sales AS char(20)) LIKE '15%'
   AND type = 'trad_cook'
GO

下面是结果集:

title                                                        ytd_sales   
------------------------------------------------------------ ----------- 
Fifty Years in Buckingham Palace Kitchens                    15096       

(1 row(s) affected)


#6


CAST 和 CONVERT 提供的功能:将某种数据类型的表达式显式转换为另一种数据类型。 

语法 

使用 CAST: 

CAST ( expression AS data_type ) 

使用 CONVERT: 

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

参数 

expression 

是任何有效的 Microsoft® SQL Server™ 

表达式。有关更多信息,请参见表达式。 



data_type 

目标系统所提供的数据类型,包括 bigint 和 sql_variant。 

不能使用用户定义的数据类型。 

有关可用的数据类型的更多信息,请参见数据类型。 

length 

nchar、nvarchar、char、varchar、 

binary 或 varbinary 数据类型的可选参数。 

style 



日期格式样式,借以将 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)。 


以上内容是到SQL帮助中复制下来的,但是要注意个情况,但CONVERT对日期进行转换时,注意style的用法,看以下有什么不同: 


--字符转换为日期时,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 

#1


是这个吗??


将某种数据类型的表达式显式转换为另一种数据类型。由于某些需求经常用到取日期格式的不同.现以下可在
SQL Server中 将日期格式化.

SQL Server 支持使用科威特算法的阿拉伯样式中的数据格式。

在表中,左侧的两列表示将 datetime 或 smalldatetime 转换为字符数据的 style 值。给 style 值加 100,可获得包括世纪数位的四位年份 (yyyy)。

不带世纪数位 (yy)  带世纪数位 (yyyy) 
标准 
输入/输出**
-  0 或 100 (*)  默认值  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
-  9 或 109 (*)  默认值 + 毫秒  mon dd yyyy hh:mi:ss:mmmAM(或 PM)
10  110  美国  mm-dd-yy
11  111  日本  yy/mm/dd
12  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:mmmAM

*    默认值(style 0 或 100、9 或 109、13 或 113、20 或 120、21 或 121)始终返回世纪数位 (yyyy)。
** 当转换为 datetime 时输入;当转换为字符数据时输出。
*** 专门用于 XML。对于从 datetime 或 smalldatetime 到 character 数据的转换,输出格式如表中所示。对于从 float、money 或 smallmoney 到 character 数据的转换,输出等同于 style 2。对于从 real 到 character 数据的转换,输出等同于 style 1。

重要   默认情况下,SQL Server 根据截止年份 2049 解释两位数字的年份。即,两位数字的年份 49 被解释为 2049,而两位数字的年份 50 被解释为 1950。许多客户端应用程序(例如那些基于 OLE 自动化对象的客户端应用程序)都使用 2030 作为截止年份。SQL Server 提供一个配置选项("两位数字的截止年份"),借以更改 SQL Server 所使用的截止年份并对日期进行一致性处理。然而最安全的办法是指定四位数字年份。

 

当从 smalldatetime 转换为字符数据时,包含秒或毫秒的样式将在这些位置上显示零。当从 datetime 或 smalldatetime 值进行转换时,可以通过使用适当的 char 或 varchar 数据类型长度来截断不需要的日期部分。

下表显示了从 float 或 real 转换为字符数据时的 style 值。

值  输出
0(默认值)  最大为 6 位数。根据需要使用科学记数法。
1  始终为 8 位值。始终使用科学记数法。
2  始终为 16 位值。始终使用科学记数法。

在下表中,左列表示从 money 或 smallmoney 转换为字符数据时的 style 值。

值  输出
0(默认值)  小数点左侧每三位数字之间不以逗号分隔,小数点右侧取两位数,例如 4235.98。
1  小数点左侧每三位数字之间以逗号分隔,小数点右侧取两位数,例如 3,510.92。
2  小数点左侧每三位数字之间不以逗号分隔,小数点右侧取四位数,例如 4235.9819。

使用 CONVERT:

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


select CONVERT(varchar, getdate(), 120 )
2004-09-12 11:06:08

select replace(replace(replace(CONVERT(varchar, getdate(), 120 ),\'-\',\'\'),\' \',\'\'),\':\',\'\')
20040912110608

select CONVERT(varchar(12) , getdate(), 111 )
2004/09/12

select CONVERT(varchar(12) , getdate(), 112 )
20040912

select CONVERT(varchar(12) , getdate(), 102 )
2004.09.12

select CONVERT(varchar(12) , getdate(), 101 )
09/12/2004

select CONVERT(varchar(12) , getdate(), 103 )
12/09/2004

select CONVERT(varchar(12) , getdate(), 104 )
12.09.2004

select CONVERT(varchar(12) , getdate(), 105 )
12-09-2004

select CONVERT(varchar(12) , getdate(), 106 )
12 09 2004

select CONVERT(varchar(12) , getdate(), 107 )
09 12, 2004

select CONVERT(varchar(12) , getdate(), 108 )
11:06:08

select CONVERT(varchar(12) , getdate(), 109 )
09 12 2004 1

select CONVERT(varchar(12) , getdate(), 110 )
09-12-2004

select CONVERT(varchar(12) , getdate(), 113 )
12 09 2004 1

select CONVERT(varchar(12) , getdate(), 114 )
11:06:08.177

#2



应该就是楼上的吧

#3


CAST 和 CONVERT
将某种数据类型的表达式显式转换为另一种数据类型。CAST 和 CONVERT 提供相似的功能。

语法
使用 CAST:

CAST ( expression AS data_type ) 

使用 CONVERT:

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

参数
expression

是任何有效的 Microsoft® SQL Server™ 表达式。有关更多信息,请参见表达式。 

data_type

目标系统所提供的数据类型,包括 bigint 和 sql_variant。不能使用用户定义的数据类型。有关可用的数据类型的更多信息,请参见数据类型。 

length

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

style

日期格式样式,借以将 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)。

#4


TIME_TO_SEC 实际上是指计算指定时间的秒数,它是个段时间,不是点时间。
楼上写的convert实际上得到的还是点时间(即时刻值)的字串形式。


sqlserver datetime的存储就是存的段,以初始时间 1753-1-1 00:00:00.000 加上时间段,以int型存储.

在.net中实际上就是ticks值,也即timespan.  比如 
timespan t=d1-d2l;
int x = t.totalseconds;
(上面随手敲的,可能手误)


比如

TIME_TO_SEC('00:00:38') 实际上得到38
TIME_TO_SEC('00:01:38') 得到 98

它将时间点与00:00:00 进行比较得到时差,也中ticks值。


而在sqlserver中算的话,与mysql比起来没有直接对等的函数, 不过可以用datediff来实现


declare @d datetime
set @d='00:05:01.000'  --当没有日期部分时,会默认以1900-1-1开始
select datediff(ss,'1900-1-1',@d)

#5


A. 同时使用 CAST 和 CONVERT
每个示例都将检索书名(这些图书的截止当前销售额的第一位数字为 3),并将这些图书的 ytd_sales 转换为 char(20)。

-- Use CAST.
USE pubs
GO
SELECT SUBSTRING(title, 1, 30) AS Title, ytd_sales
FROM titles
WHERE CAST(ytd_sales AS char(20)) LIKE '3%'
GO

-- Use CONVERT.
USE pubs
GO
SELECT SUBSTRING(title, 1, 30) AS Title, ytd_sales
FROM titles
WHERE CONVERT(char(20), ytd_sales) LIKE '3%'
GO

下面是任一查询的结果集:

Title                          ytd_sales   
------------------------------ ----------- 
Cooking with Computers: Surrep 3876        
Computer Phobic AND Non-Phobic 375         
Emotional Security: A New Algo 3336        
Onions, Leeks, and Garlic: Coo 375         

(4 row(s) affected)

B. 使用带有算术运算符的 CAST
下面的示例通过将总的截止当前销售额 (ytd_sales) 与每本图书的价格 (price) 相除,进行单独列计算 (Copies)。在四舍五入到最接近的整数后,此结果将转换为 int 数据类型。 

USE pubs
GO
SELECT CAST(ROUND(ytd_sales/price, 0) AS int) AS 'Copies'
FROM titles
GO

下面是结果集:

Copies      
------ 
205         
324         
6262        
205         
102         
7440        
NULL        
383         
205         
NULL        
17          
187         
16          
204         
418         
18          
1263        
273         

(18 row(s) affected)

C. 使用 CAST 进行串联
下面的示例使用 CAST 数据类型转换函数来串联非字符、非二进制表达式。

USE pubs
GO
SELECT 'The price is ' + CAST(price AS varchar(12))
FROM titles
WHERE price > 10.00
GO

下面是结果集:

------------------ 
The price is 19.99        
The price is 11.95        
The price is 19.99        
The price is 19.99        
The price is 22.95        
The price is 20.00        
The price is 21.59        
The price is 10.95        
The price is 19.99        
The price is 20.95        
The price is 11.95        
The price is 14.99        

(12 row(s) affected)

D. 使用 CAST 获得更多易读文本
下面的示例在选择列表中使用 CAST 将 title 列转换为 char(50) 列,这样结果将更加易读。

USE pubs
GO
SELECT CAST(title AS char(50)), ytd_sales
FROM titles
WHERE type = 'trad_cook'
GO

下面是结果集:

                                                       ytd_sales
--------------------------------------------------     ---------
Onions, Leeks, and Garlic: Cooking Secrets of the      375
Fifty Years in Buckingham Palace Kitchens              15096
Sushi, Anyone?                                         4095

(3 row(s) affected)

E. 使用带有 LIKE 子句的 CAST
下面的示例将 int 列(ytd_sales 列)转换为 char(20) 列,以便使用 LIKE 子句。

USE pubs
GO
SELECT title, ytd_sales
FROM titles
WHERE CAST(ytd_sales AS char(20)) LIKE '15%'
   AND type = 'trad_cook'
GO

下面是结果集:

title                                                        ytd_sales   
------------------------------------------------------------ ----------- 
Fifty Years in Buckingham Palace Kitchens                    15096       

(1 row(s) affected)


#6


CAST 和 CONVERT 提供的功能:将某种数据类型的表达式显式转换为另一种数据类型。 

语法 

使用 CAST: 

CAST ( expression AS data_type ) 

使用 CONVERT: 

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

参数 

expression 

是任何有效的 Microsoft® SQL Server™ 

表达式。有关更多信息,请参见表达式。 



data_type 

目标系统所提供的数据类型,包括 bigint 和 sql_variant。 

不能使用用户定义的数据类型。 

有关可用的数据类型的更多信息,请参见数据类型。 

length 

nchar、nvarchar、char、varchar、 

binary 或 varbinary 数据类型的可选参数。 

style 



日期格式样式,借以将 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)。 


以上内容是到SQL帮助中复制下来的,但是要注意个情况,但CONVERT对日期进行转换时,注意style的用法,看以下有什么不同: 


--字符转换为日期时,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