1. 程式人生 > >sql 轉換成yyyy-mm-dd格式和SqlServer中得到當前日期(convert函式,getdate函式)

sql 轉換成yyyy-mm-dd格式和SqlServer中得到當前日期(convert函式,getdate函式)

  如何用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                                  dd.mm.yy   
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


其它格式轉換的範例如下:
--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