SQL 日期格式 问题
SqlServer日期(convert函數(shù),getdate函數(shù))
函數(shù)GETDATE()的返回值在顯示時(shí)只顯示到秒。實(shí)際上,SQL Sever內(nèi)部時(shí)間可以精確到毫秒級(jí)(確切地說,可以精確到3.33毫秒)。 ..類型0,9,和13總是返回四位的年。對(duì)其它類型,要顯示世紀(jì),把style值加上100。類型13和14返回24小時(shí)時(shí)鐘的時(shí)間。類型0,7,和 13返回的月份用三位字符表示(用Nov代表November).
對(duì)表11.1中所列的每一種格式,你可以把類型值加上100來顯示有世紀(jì)的年(例如,00年將顯示為2000年)。例如,要按日本標(biāo)準(zhǔn)顯示日期,包括世紀(jì),你應(yīng)使用如下的語句:
SELECT CONVERT(VARCHAR(30),GETDATE(),111)
在這個(gè)例子中,函數(shù)CONVERT()把日期格式進(jìn)行轉(zhuǎn)換,顯示為1997/11/30
要得到不同格式的日期和時(shí)間,你需要使用函數(shù)CONVERT()。例如,當(dāng)下面的這個(gè)語句執(zhí)行時(shí),顯示的時(shí)間將包括毫秒:
SELECT CONVERT(VARCHAR(30),GETDATE(),9)
注意例子中數(shù)字9的使用。這個(gè)數(shù)字指明了在顯示日期和時(shí)間時(shí)使用哪種日期和時(shí)間格式。當(dāng)這個(gè)語句執(zhí)行時(shí),將顯示如下的日期和時(shí)間:
簡(jiǎn)體中文OS:02 6 2007 4:33:56:530PM
英文OS:Nov 30 1997 3:29:55:170AM
convert函數(shù)中的style參數(shù)提供了datetime或smalldatetime轉(zhuǎn)換到char或varchar的多種日期顯示格式。 Style的數(shù)字參數(shù)決定日期被如何顯示。年可以被顯示成兩位數(shù)(yy),也可以顯示成4位數(shù)(yyyy)。例如,將style參數(shù)賦值為100,可以得 到一個(gè)4位的年號(hào),即包括世紀(jì)值(yyyy).
下表列出了style參數(shù)的可用值及可以使用的各種日期格式。當(dāng)同smalldatetime類型一起使用style參數(shù)時(shí),那些包括秒和毫秒的格式將在其位值顯示零。
類型值 標(biāo)準(zhǔn) 輸出
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
---------------------------------------------------------------------------------
有時(shí)侯在數(shù)據(jù)庫的某些字段因特殊考慮的關(guān)系
這些字段是用char或nchar的格式來儲(chǔ)存日期
如果希望將這些字段中轉(zhuǎn)成一致的日期格式(如yyyy/mm/dd)
例如1988/1/1轉(zhuǎn)成1988/01/01的話
請(qǐng)?jiān)囍鴧⒖家韵碌恼Z法…
SELECT CONVERT(varchar(10),CONVERT(datetime,employee_birthday,111),111)
FROM employee
其它格式轉(zhuǎn)換的范例如下:
--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語言只獲得數(shù)據(jù)庫當(dāng)前日期,且格式為"yyyy-mm-dd"?
select convert(char(10),getdate(),120)
---------------------------------------------------------------------------------
--字符轉(zhuǎn)換為日期時(shí),Style的使用
--1. Style=101時(shí),表示日期字符串為:mm/dd/yyyy格式
SELECT CONVERT(datetime,'11/1/2003',101)
--結(jié)果:2003-11-01 00:00:00.000
--2. Style=101時(shí),表示日期字符串為:dd/mm/yyyy格式
SELECT CONVERT(datetime,'11/1/2003',103)
--結(jié)果:2003-01-11 00:00:00.000
/*== 日期轉(zhuǎn)換為字符串 ==*/
DECLARE @dt datetime
SET @dt='2003-1-11'
--1. Style=101時(shí),表示將日期轉(zhuǎn)換為:mm/dd/yyyy 格式
SELECT CONVERT(varchar,@dt,101)
--結(jié)果:01/11/2003
--2. Style=103時(shí),表示將日期轉(zhuǎn)換為:dd/mm/yyyy 格式
SELECT CONVERT(varchar,@dt,103)
--結(jié)果:11/01/2003
/*== 這是很多人經(jīng)常犯的錯(cuò)誤,對(duì)非日期型轉(zhuǎn)換使用日期的style樣式 ==*/
SELECT CONVERT(varchar,'2003-1-11',101)
--結(jié)果:2003-1-11
--1.
/*--說明
SET DATEFORMAT設(shè)置對(duì)使用CONVERT把字符型日期轉(zhuǎn)換為日期的處理也具有影響
但不影響明確指定了style的CONVERT處理。
--*/
--示例 ,在下面的示例中,第一個(gè)CONVERT轉(zhuǎn)換未指定style,轉(zhuǎn)換的結(jié)果受SET DATAFORMAT的影響,第二個(gè)CONVERT轉(zhuǎn)換指定了style,轉(zhuǎn)換結(jié)果受style的影響。
--設(shè)置輸入日期順序?yàn)?日/月/年
SET DATEFORMAT DMY
--不指定Style參數(shù)的CONVERT轉(zhuǎn)換將受到SET DATEFORMAT的影響
SELECT CONVERT(datetime,'2-1-2005')
--結(jié)果: 2005-01-02 00:00:00.000
--指定Style參數(shù)的CONVERT轉(zhuǎn)換不受SET DATEFORMAT的影響
SELECT CONVERT(datetime,'2-1-2005',101)
--結(jié)果: 2005-02-01 00:00:00.000
GO
--2.
/*--說明
如果輸入的日期包含了世紀(jì)部分,則對(duì)日期進(jìn)行解釋處理時(shí)
年份的解釋不受SET DATEFORMAT設(shè)置的影響。
--*/
--示例,在下面的代碼中,同樣的SET DATEFORMAT設(shè)置,輸入日期的世紀(jì)部分與不輸入日期的世紀(jì)部分,解釋的日期結(jié)果不同。
DECLARE @dt datetime
--設(shè)置SET DATEFORMAT為:月日年
SET DATEFORMAT MDY
--輸入的日期中指定世紀(jì)部分
SET @dt='01-2002-03'
SELECT @dt
--結(jié)果: 2002-01-03 00:00:00.000
--輸入的日期中不指定世紀(jì)部分
SET @dt='01-02-03'
SELECT @dt
--結(jié)果: 2003-01-02 00:00:00.000
GO
--3.
/*--說明
如果輸入的日期不包含日期分隔符,那么SQL Server在對(duì)日期進(jìn)行解釋時(shí)
將忽略SET DATEFORMAT的設(shè)置。
--*/
--示例,在下面的代碼中,不包含日期分隔符的字符日期,在不同的SET DATEFORMAT設(shè)置下,其解釋的結(jié)果是一樣的。
DECLARE @dt datetime
--設(shè)置SET DATEFORMAT為:月日年
SET DATEFORMAT MDY
SET @dt='010203'
SELECT @dt
--結(jié)果: 2001-02-03 00:00:00.000
--設(shè)置SET DATEFORMAT為:日月年
SET DATEFORMAT DMY
SET @dt='010203'
SELECT @dt
--結(jié)果: 2001-02-03 00:00:00.000
--輸入的日期中包含日期分隔符
SET @dt='01-02-03'
SELECT @dt
--結(jié)果: 2003-02-01 00:00:00.000
--以下示例演示了在不同的語言環(huán)境(SET LANGUAGE)下,DATENAME與CONVERT函數(shù)的不同結(jié)果。
USE master
--設(shè)置會(huì)話的語言環(huán)境為: English
SET LANGUAGE N'English'
SELECT
DATENAME(Month,GETDATE()) AS [Month],
DATENAME(Weekday,GETDATE()) AS [Weekday],
CONVERT(varchar,GETDATE(),109) AS [CONVERT]
/*--結(jié)果:
Month Weekday CONVERT
------------- -------------- -------------------------------
March Tuesday Mar 15 2005 8:59PM
--*/
--設(shè)置會(huì)話的語言環(huán)境為: 簡(jiǎn)體中文
SET LANGUAGE N'簡(jiǎn)體中文'
SELECT
DATENAME(Month,GETDATE()) AS [Month],
DATENAME(Weekday,GETDATE()) AS [Weekday],
CONVERT(varchar,GETDATE(),109) AS [CONVERT]
/*--結(jié)果
Month Weekday CONVERT
------------- --------------- -----------------------------------------
05 星期四 05 19 2005 2:49:20:607PM
--*/
總結(jié)
以上是生活随笔為你收集整理的SQL 日期格式 问题的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 券商股票是什么
- 下一篇: ASP.NET中TextBox控件设置R