2013-05-10 62 views
-1

查询CONVERT()中的第三个参数是做什么的?

获取加入年,加入月和员工表

加入日期这是我的查询,我必须执行。为此,我写了下面的脚本:

select 
    SUBSTRING (convert(varchar,joining_date,103),7,4) , 
    SUBSTRING (convert(varchar,joining_date,100),1,3) , 
    SUBSTRING (convert(varchar,joining_date,100),5,2) 
from 
    EMPLOYEE 

结果为:http://d.pr/i/vObI

但是,当我改变convert(varchar,joining_date,100)convert(varchar,joining_date,101)

结果是这样的:http://d.pr/i/G5fZ

谁能请解释一下这个参数是指?

+1

如果您的谷歌“* sql服务器转换*”,前三个条目详细解释这一点。 – RBarryYoung 2013-05-10 13:45:44

+0

微软已精心提供了[文档](http://msdn.microsoft.com/en-us/library/ms187928(v=sql.105).aspx)来准确解释“CONVERT” - 以及其他所有[built-在函数中](http://msdn.microsoft.com/en-us/library/ms174318(v = sql.105).aspx) - 确实包括每个参数的含义。 – Pondlife 2013-05-10 14:05:18

回答

0

有几种不同的方式可以使用convert(varchar...格式化日期。这些在MSDN sitedifferent sites online上有详细记录。

使用convert(varchar..., date, 100)地方的日期格式为:

mon dd yyyy hh:mmAM (or PM) 
May 10 2013 12:55PM 

使用convert(varchar...date, 101)把日期格式:

mm/dd/yyyy 
05/10/2013 

Demo

每当你实现这些我的建议是转换,请务必在varchar(10)等上给予长度。

基于什么样子你是返回,可以消除一些你正在使用和实施一些其他的功能,以获得相同的结果convert/substring声明:

select year(joining_date) as [year] , 
    convert(varchar(3),joining_date,100) as [month] , 
    day(joining_date) as [day] 
from EMPLOYEE 
0

我觉得这是一个更好的办法来分割和使用DATEPART得到的日期时间部分:

select DATEPART(YEAR, [joining_date]), 
    DATEPART(MONTH, [joining_date]), 
    DATEPART(DAY, [joining_date]) from EMPLOYEE 

,或者如果你有兴趣,例如在名称中使用DATENAME:

select DATEPART(YEAR, [joining_date]), 
DATENAME(MONTH, [joining_date]), 
DATEPART(DAY, [joining_date]) from EMPLOYEE 

但是根据DATENAME的MSDN:“返回值取决于使用SET LANGUAGE设置的语言环境”。

关于您的第一个问题 - 这些参数基本上是样式,或者我将它们称为区域特定代码,如上所述,您可以针对数据库运行不同的查询,然后您将看到返回的字符串 - 你会得到意想不到的结欲了解更多信息请参考MSDN: CAST and CONVERT

相关问题