sql转换成yyyy-mm-dd格式和SqlServer中得到当前⽇期
(convert函数。。。
如何⽤sql语⾔只获得数据库当前⽇期,且格式为"yyyy-mm-dd"?
select convert(char(10),getdate(),120)
select  *  from  表名  where  convert(char(10),字段名,120)='2012-01-01'
SqlServer中得到当前⽇期(convert函数,getdate函数)
SqlServer中得到当前⽇期(convert函数,getdate函数)
函数GETDATE()的返回值在显⽰时只显⽰到秒。实际上,SQL Sever内部时间可以精确到毫秒级(确切地说,可以精确到3.33毫秒)。 ..类型0,9,和13总是返回四位的年。对其它类型,要显⽰世纪,把style值加上100。类型13和14返回24⼩时时钟的时间。类型0,7,和 13返回的⽉份⽤三位字符表⽰(⽤Nov代表November).
对表11.1中所列的每⼀种格式,你可以把类型值加上100来显⽰有世纪的年(例如,00年将显⽰为2000年)。例如,要按⽇本标准显⽰⽇期,包括世纪,你应使⽤如下的语句:
SELECT CONVERT(VARCHAR(30),GETDATE(),111)
在这个例⼦中,函数CONVERT()把⽇期格式进⾏转换,显⽰为1997/11/30
要得到不同格式的⽇期和时间,你需要使⽤函数CONVERT()。例如,当下⾯的这个语句执⾏时,显⽰的时间将包括毫秒:
SELECT CONVERT(VARCHAR(30),GETDATE(),9)
注意例⼦中数字9的使⽤。这个数字指明了在显⽰⽇期和时间时使⽤哪种⽇期和时间格式。当这个语句执⾏时,将显⽰如下的⽇期和时间:简体中⽂OS:02  6 2007  4:33:56:530PM
英⽂OS:Nov 30 1997 3:29:55:170AM
convert函数中的style参数提供了datetime或smalldatetime转换到char或varchar的多种⽇期显⽰格式。 Style的数字参数决定⽇期被如何显⽰。年可以被显⽰成两位数(yy),也可以显⽰成4位数(yyyy)。例如,将style参数赋值为100,可以得 到⼀个4位的年号,即包括世纪值(yyyy).
下表列出了style参数的可⽤值及可以使⽤的各种⽇期格式。当同smalldatetime类型⼀起使⽤style参数时,那些包括秒和毫秒的格式将在其位值显⽰零。
类型值          标准                                    输出
0              Default                                mon dd yyyy hh:miAM
1              USA                                    mm/dd/yy
2              ANSI                                    yy.mm.dd
3              British/French                          dd/mm/yy
4              German                                 
5              Italian                                dd-mm-yy
6              -                                      dd mon yy
7              -                                      mon dd,yy
8              -                                      hh:mi:ss
9              Default + millisecondsR11;mon          dd yyyy hh:mi:ss:mmmAM(or )
10              USA                                    mm-dd-yy
11              JAPAN                                  yy/mm/dd
12              ISO                                    yymmdd
13              Europe                                  Default + millisecondsR11;dd mon yyyy    hh:mi:ss:mmm(24h)
14              -                                      hh:mi:ss:mmm(24h)
类型值前⾯加1,⽐如101 则显⽰ mm/dd/yyyy
---------------------------------------------------------------------------------
有时侯在数据库的某些字段因特殊考虑的关系
这些字段是⽤char或nchar的格式来储存⽇期
如果希望将这些字段中转成⼀致的⽇期格式(如yyyy/mm/dd)
例如1988/1/1转成1988/01/01的话
请试着参考以下的语法…
SELECT CONVERT(varchar(10),CONVERT(datetime,employee_birthday,111),111) FROM employee
其它格式转换的范例如下:transform和convert的区别
--YYYY/MM/DD
Select Convert(varchar(10),Getdate(),111)
--YYYYMMDD
Select Convert(varchar(10),Getdate(),112)
--HH:MM:SS
Select Convert(varchar(8),Getdate(),108)
--HH:MM:SS:mmm
Select Convert(varchar(12),Getdate(),114)
-
--------------------------------------------------------------------------------
如何⽤sql语⾔只获得数据库当前⽇期,且格式为"yyyy-mm-dd"?
select convert(char(10),getdate(),120)
---------------------------------------------------------------------------------
--字符转换为⽇期时,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
--1.
/*--说明
SET DATEFORMAT设置对使⽤CONVERT把字符型⽇期转换为⽇期的处理也具有影响
但不影响明确指定了style的CONVERT处理。
--*/
--⽰例 ,在下⾯的⽰例中,第⼀个CONVERT转换未指定style,转换的结果受SET DATAFORMAT的影响,第⼆个CONVERT转换指定了style,转换结果受style的影响。
--设置输⼊⽇期顺序为 ⽇/⽉/年
SET DATEFORMAT DMY
--不指定Style参数的CONVERT转换将受到SET DATEFORMAT的影响
SELECT CONVERT(datetime,'2-1-2005')
--结果: 2005-01-02 00:00:00.000
--指定Style参数的CONVERT转换不受SET DATEFORMAT的影响
SELECT CONVERT(datetime,'2-1-2005',101)
--结果: 2005-02-01 00:00:00.000
GO
--2.
/*--说明
如果输⼊的⽇期包含了世纪部分,则对⽇期进⾏解释处理时
年份的解释不受SET DATEFORMAT设置的影响。
--*/
--⽰例,在下⾯的代码中,同样的SET DATEFORMAT设置,输⼊⽇期的世纪部分与不输⼊⽇期的世纪部分,解释的⽇期结果不同。DECLARE @dt datetime
--设置SET DATEFORMAT为:⽉⽇年
SET DATEFORMAT MDY
--输⼊的⽇期中指定世纪部分
SET @dt='01-2002-03'
SELECT @dt
--结果: 2002-01-03 00:00:00.000
--输⼊的⽇期中不指定世纪部分
SET @dt='01-02-03'
SELECT @dt
--结果: 2003-01-02 00:00:00.000
GO
-
-3.
/*--说明
如果输⼊的⽇期不包含⽇期分隔符,那么SQL Server在对⽇期进⾏解释时
将忽略SET DATEFORMAT的设置。
--*/
--⽰例,在下⾯的代码中,不包含⽇期分隔符的字符⽇期,在不同的SET DATEFORMAT设置下,其解释的结果是⼀样的。
DECLARE @dt datetime
--设置SET DATEFORMAT为:⽉⽇年
SET DATEFORMAT MDY
SET @dt='010203'
SELECT @dt
--结果: 2001-02-03 00:00:00.000
--设置SET DATEFORMAT为:⽇⽉年
SET DATEFORMAT DMY
SET @dt='010203'
SELECT @dt
--结果: 2001-02-03 00:00:00.000
--输⼊的⽇期中包含⽇期分隔符
SET @dt='01-02-03'
SELECT @dt
--结果: 2003-02-01 00:00:00.000
--以下⽰例演⽰了在不同的语⾔环境(SET LANGUAGE)下,DATENAME与CONVERT函数的不同结果。USE master
--设置会话的语⾔环境为: English
SET LANGUAGE N'English'
SELECT
DATENAME(Month,GETDATE()) AS [Month],
DATENAME(Weekday,GETDATE()) AS [Weekday],
CONVERT(varchar,GETDATE(),109) AS [CONVERT]
/*--结果:
Month    Weekday  CONVERT
------------- -------------- -------------------------------
March    Tuesday  Mar 15 2005 8:59PM
--*/
-
-设置会话的语⾔环境为: 简体中⽂
SET LANGUAGE N'简体中⽂'
SELECT
DATENAME(Month,GETDATE()) AS [Month],
DATENAME(Weekday,GETDATE()) AS [Weekday],
CONVERT(varchar,GETDATE(),109) AS [CONVERT]
/*--结果
Month    Weekday    CONVERT
------------- --------------- -----------------------------------------
05      星期四    05 19 2005 2:49:20:607PM

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。