『壹』 如何在 sql Server中 將日期格式化
CONVERT SQL Server中將日期格式化2008年12月22日 星期一 16:39CONVERT
將某種數據類型的表達式顯式轉換為另一種數據類型。由於某些需求經常用到取日期格式的不同.現以下可在
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)。
『貳』 如何在 SQL Server中 將日期格式化
你是要顯示的時候格式化?
你可以在查詢中,用convert(varchar(10),dtcol,120)
等方式進行格式化。
或者在你客戶端的機器上
修改
日歷設置中的
短日期、時間格式來實現。
至於資料庫中存儲的,如果你用的是date、datetime格式,數據就那麼存儲著(其實應該存儲的數字),這個你是不用關心其格式的。
『叄』 sql日期格式化
sql server中使用convert來取得datetime數據類型樣式(全)
日期數據格式的處理,兩個示例:
CONVERT(varchar(16), 時間一, 20) 結果:2007-02-01 08:02/*時間一般為getdate()函數或數據表裡的欄位*/
CONVERT(varchar(10), 時間一, 23) 結果:2007-02-01 /*varchar(10)表示日期輸出的格式,如果不夠長會發生截取*/
語句及查詢結果:
SelectCONVERT(varchar(100),GETDATE(),0)--0516200610:57AM
SelectCONVERT(varchar(100),GETDATE(),1)--05/16/06
SelectCONVERT(varchar(100),GETDATE(),2)--06.05.16
SelectCONVERT(varchar(100),GETDATE(),3)--16/05/06
SelectCONVERT(varchar(100),GETDATE(),4)--16.05.06
SelectCONVERT(varchar(100),GETDATE(),5)--16-05-06
SelectCONVERT(varchar(100),GETDATE(),6)--160506
SelectCONVERT(varchar(100),GETDATE(),7)--0516,06
SelectCONVERT(varchar(100),GETDATE(),8)--10:57:46
SelectCONVERT(varchar(100),GETDATE(),9)--0516200610:57:46:827AM
SelectCONVERT(varchar(100),GETDATE(),10)--05-16-06
SelectCONVERT(varchar(100),GETDATE(),11)--06/05/16
SelectCONVERT(varchar(100),GETDATE(),12)--060516
SelectCONVERT(varchar(100),GETDATE(),13)--1605200610:57:46:937
SelectCONVERT(varchar(100),GETDATE(),14)--10:57:46:967
SelectCONVERT(varchar(100),GETDATE(),20)--2006-05-1610:57:47
SelectCONVERT(varchar(100),GETDATE(),21)--2006-05-1610:57:47.157
SelectCONVERT(varchar(100),GETDATE(),22)--05/16/0610:57:47AM
SelectCONVERT(varchar(100),GETDATE(),23)--2006-05-16
SelectCONVERT(varchar(100),GETDATE(),24)--10:57:47
SelectCONVERT(varchar(100),GETDATE(),25)--2006-05-1610:57:47.250
SelectCONVERT(varchar(100),GETDATE(),100)--0516200610:57AM
SelectCONVERT(varchar(100),GETDATE(),101)--05/16/2006
SelectCONVERT(varchar(100),GETDATE(),102)--2006.05.16
SelectCONVERT(varchar(100),GETDATE(),103)--16/05/2006
SelectCONVERT(varchar(100),GETDATE(),104)--16.05.2006
SelectCONVERT(varchar(100),GETDATE(),105)--16-05-2006
SelectCONVERT(varchar(100),GETDATE(),106)--16052006
SelectCONVERT(varchar(100),GETDATE(),107)--0516,2006
SelectCONVERT(varchar(100),GETDATE(),108)--10:57:49
SelectCONVERT(varchar(100),GETDATE(),109)--0516200610:57:49:437AM
SelectCONVERT(varchar(100),GETDATE(),110)--05-16-2006
SelectCONVERT(varchar(100),GETDATE(),111)--2006/05/16
SelectCONVERT(varchar(100),GETDATE(),112)--20060516
SelectCONVERT(varchar(100),GETDATE(),113)--1605200610:57:49:513
SelectCONVERT(varchar(100),GETDATE(),114)--10:57:49:547
SelectCONVERT(varchar(100),GETDATE(),120)--2006-05-1610:57:49
SelectCONVERT(varchar(100),GETDATE(),121)--2006-05-1610:57:49.700
SelectCONVERT(varchar(100),GETDATE(),126)--2006-05-16T10:57:49.827
SelectCONVERT(varchar(100),GETDATE(),130)--18??????????142710:57:49:907AM
SelectCONVERT(varchar(100),GETDATE(),131)--18/04/142710:57:49:920AM
說明:
使用 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)。
不帶世紀數位 (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* Hijri**** dd mon yyyy hh:mi:ss:mmmAM
- 131* Hijri**** 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。
****Hijri 是具有幾種變化形式的日歷系統,Microsoft® SQL Server™ 2000 使用其中的科威特演算法。重要 默認情況下,SQL Server 根據截止年份 2049 解釋兩位數字的年份。即,兩位數字的年份 49 被解釋為 2049,而兩位數字的年份 50 被解釋為 1950。許多客戶端應用程序(例如那些基於 OLE 自動化對象的客戶端應用程序)都使用 2030 作為截止年份。SQL Server 提供一個配置選項("兩位數字的截止年份"),藉以更改 SQL Server 所使用的截止年份並對日期進行一致性處理。然而最安全的辦法是指定四位數字年份。
當從 smalldatetime 轉換為字元數據時,包含秒或毫秒的樣式將在這些位置上顯示零。當從 datetime 或 smalldatetime 值進行轉換時,可以通過使用適當的 char 或 varchar 數據類型長度來截斷不需要的日期部分。
『肆』 如何在 SQL Server中 將日期格式化
1、常用日期方法(下面的GetDate() = '2006-11-08 13:37:56.233')
(1)DATENAME ( datepart ,date )
返回表示指定日期的指定日期部分的字元串。Datepart詳見下面的列表.
SELECT DateName(day,Getdate()) –返回8
(2)DATEPART ( datepart , date )
返回表示指定日期汪敏慶的指拿指定日期部分的整數。
SELECT DATEPART(year,Getdate()) –返回2006
(3)DATEADD (datepart , number, date )
返回給指定日期加上一個時間間隔後的新datetime 值。
SELECT DATEADD(week,1,GetDate()) --當前日期加一周困握後的日期
(4)DATEDIFF ( datepart , startdate , enddate )
返回跨兩個指定日期的日期邊界數和時間邊界數。
SELECT DATEDIFF(month,'2006-10-11','2006-11-01') --返回1
(5)DAY ( date )
返回一個整數,表示指定日期的天datepart 部分。
SELECT day(GetDate()) –返回8
(6)GETDATE()
以datetime 值的SQL Server 2005 標准內部格式返回當前系統日期和時間。
SELECT GetDate() --返回2006-11-08 13:37:56.233
(7)MONTH ( date )
返回表示指定日期的「月」部分的整數。
SELECT MONTH(GETDATE()) --返回11
(8)YEAR ( date )
返回表示指定日期的「年」部分的整數。
SELECT YEAR(GETDATE()) --返回2006
2、取特定日期
(1)獲得當前日期是星期幾
SELECT DateName(weekday,Getdate()) --Wednesday
(2)計算哪一天是本周的星期一
SELECT DATEADD(week, DATEDIFF(week,'1900-01-01',getdate()), '1900-01-01') --返回2006-11-06 00:00:00.000
或
SELECT DATEADD(week, DATEDIFF(week,0,getdate()),0)
(3)當前季度的第一天
SELECT DATEADD(quarter, DATEDIFF(quarter,0,getdate()), 0)—返回2006-10-01 00:00:00.000
(4)如何取得某個月的天數
SELECT Day(dateadd(ms,-3,DATEADD(mm, DATEDIFF(m,0,'2006-02-03')+1,0))) —返回28
(5)一個季度多少天
declare @m tinyint,@time smalldatetime
select @m=month(getdate())
select @m=case when @m between 1 and 3 then 1
when @m between 4 and 6 then 4
when @m between 7 and 9 then 7
else 10 end
select @time=datename(year,getdate())+'-'+convert(varchar(10),@m)+'-01'
select datediff(day,@time,dateadd(mm,3,@time)) —返回92
(6)獲得年月日(yyyy-MM-dd)
SELECT CONVERT(VARCHAR(10),GETDATE(),120) –返回2006-11-08
3、其它
(1)--下面的示例將日期指定為數字。資料庫引擎將0 解釋為1900 年1 月1 日。
SELECT MONTH(0), DAY(0), YEAR(0) –返回1 1 1900
--下面兩句是等效的
SELECT DATENAME(WEEKDAY,0)
SELECT DATENAME(WEEKDAY,'1900-01-01')
(2)SET DATEFIRST { number | @number_var }
將一周的第一天設置為從1 到7 的一個數字。
SET DATEFIRST 1 --表示一周的第一天是「星期一"
SELECT DATENAME(WEEKDAY,GETDATE()) --Wednesday
SELECT DATEPART(weekday,GETDATE()) --返回3
--查看當前設置情況
select @@DATEFIRST
(3)SET DATEFORMAT { format | @format_var }
設置用於輸入datetime 或smalldatetime 數據的日期部分(月/日/年)的順序。
...有效參數包括mdy、dmy、ymd、ydm、myd 和dym。
...該設置僅用在將字元串轉換為日期值時的解釋中。它不影響日期值的顯示。
...SET DATEFORMAT 的設置是在執行或運行時設置,而不是在分析時設置。
...SET DATEFORMAT 將覆蓋SET LANGUAGE 的隱式日期格式設置。
下面是例子:
-- Set date format to year, day, month.
SET DATEFORMAT ydm;
GO
DECLARE @datevar DATETIME;
SET @datevar = '1998/31/12';
SELECT @datevar AS DateVar;
GO
-- Set date format to year, month, day.
SET DATEFORMAT ymd;
GO
DECLARE @datevar DATETIME;
SET @datevar = '1998/12/31';
SELECT @datevar AS DateVar;
GO
(4)日期部分的列表
year,縮寫 yy, yyyy
quarter,縮寫qq, q
month,縮寫mm, m
dayofyear,縮寫dy, y
day,縮寫dd, d
week,縮寫wk, ww
weekday,縮寫dw
hour,縮寫hh
minute,縮寫mi, n
second,縮寫ss, s
millisecond,縮寫ms
數據類型
范圍(精確度)
datetime
1753 年 1 月 1 日到 9999 年 12 月 31 日
3.33 毫秒
smalldatetime
1900 年 1 月 1 日到 2079 年 6 月 6 日
『伍』 sql日期格式化怎麼處理
1. SELECTconvert(varchar, getdate(), 100)-- mon dd yyyy hh:mmAM (or PM)
-- Oct 2 2008 11:01AM
SELECTconvert(varchar, getdate(), 101)-- mm/dd/yyyy - 10/02/2008
SELECTconvert(varchar, getdate(), 102)-- yyyy.mm.dd -- 2008.10.02
SELECTconvert(varchar, getdate(), 103)-- dd/mm/yyyy
SELECTconvert(varchar, getdate(), 104)-- dd.mm.yyyy
SELECTconvert(varchar, getdate(), 105)-- dd-mm-yyyy
SELECTconvert(varchar, getdate(), 106)-- dd mon yyyy
SELECTconvert(varchar, getdate(), 107)-- mon dd, yyyy
SELECTconvert(varchar, getdate(), 108)-- hh:mm:ss
SELECTconvert(varchar, getdate(), 109)-- mon dd yyyy hh:mm:ss:mmmAM (or PM)
-- Oct 2 2008 11:02:44:013AM
SELECTconvert(varchar, getdate(), 110)-- mm-dd-yyyy
SELECTconvert(varchar, getdate(), 111)-- yyyy/mm/dd
SELECTconvert(varchar, getdate(), 112)-- yyyymmdd
SELECTconvert(varchar, getdate(), 113)-- dd mon yyyy hh:mm:ss:mmm
-- 02 Oct 2008 11:02:07:577
SELECTconvert(varchar, getdate(), 114)-- hh:mm:ss:mmm(24h)
SELECTconvert(varchar, getdate(), 120)-- yyyy-mm-dd hh:mm:ss(24h)
SELECTconvert(varchar, getdate(), 121)-- yyyy-mm-dd hh:mm:ss.mmm
SELECTconvert(varchar, getdate(), 126)判卜-- yyyy-mm-ddThh:mm:ss.mmm
-- 2008-10-02T10:52:47.513
-- 利用字元串函數創建不同的日期格式
SELECTreplace(convert(varchar, getdate(), 111),'/',' ')-- yyyy mm dd
SELECTconvert(varchar(7), getdate(), 126)-- yyyy-mm
SELECT掘拆穗right(convert(varchar, getdate(), 106), 8)-- mon yyyy
go
--通用的日期轉換函數CREATE FUNCTION dbo.fnFormatDate (@Datetime DATETIME, @FormatMask VARCHAR(32))RETURNS VARCHAR(32)AS
BEGIN
DECLARE@StringDateVARCHAR(32)
SET@StringDate = @FormatMask
IF (CHARINDEX ('YYYY',@StringDate) > 0)
SET@StringDate =REPLACE(@StringDate,'YYYY',DATENAME(YY, @Datetime))
IF (CHARINDEX ('YY'御豎,@StringDate) > 0)
SET@StringDate =REPLACE(@StringDate,'YY',RIGHT(DATENAME(YY, @Datetime),2))
IF (CHARINDEX ('Month',@StringDate) > 0)
SET@StringDate =REPLACE(@StringDate,'Month',DATENAME(MM, @Datetime))
IF (CHARINDEX ('MON',@StringDateCOLLATESQL_Latin1_General_CP1_CS_AS)>0)
SET@StringDate =REPLACE(@StringDate,'MON',LEFT(UPPER(DATENAME(MM, @Datetime)),3))
IF (CHARINDEX ('Mon',@StringDate) > 0)
SET@StringDate =REPLACE(@StringDate,'Mon',LEFT(DATENAME(MM, @Datetime),3))
IF (CHARINDEX ('MM',@StringDate) > 0)
SET@StringDate =REPLACE(@StringDate,'MM',RIGHT('0'+CONVERT(VARCHAR,DATEPART(MM, @Datetime)),2))
IF (CHARINDEX ('M',@StringDate) > 0)
SET@StringDate =REPLACE(@StringDate,'M',CONVERT(VARCHAR,DATEPART(MM, @Datetime)))
IF (CHARINDEX ('DD',@StringDate) > 0)
SET@StringDate =REPLACE(@StringDate,'DD',right('0'+DATENAME(DD, @Datetime),2))
IF (CHARINDEX ('D',@StringDate) > 0)
SET@StringDate =REPLACE(@StringDate,'D',DATENAME(DD, @Datetime))
RETURN@StringDate
GO
2.通過dateadd函數來制定時間間隔
select dateadd(year,-1,convert(varchar, getdate(), 101))前一年,後一年反之
select dateadd(month,-1,convert(varchar, getdate(), 101))前一月,後一月反之
『陸』 如何在 SQL Server中 將日期格式化
SQL Server中將日期格式化一般用convert函數。
下列出一些常用的語法:
1、輸出格式:2008-02-27 00:25:13
SELECT CONVERT(char(19), getdate(), 120)
2、輸出格式:2008-02-27
SELECT CONVERT(char(10), getdate(), 12)
3、輸出格式:2008.02.27
SELECT CONVERT(char(10), getdate(), 102)
4、輸出格式:08.02.27
SELECT CONVERT(char(8), getdate(), 2)
5、輸出格式:2008/02/27
SELECT CONVERT(char(10), getdate(), 111)
6、輸出格式:08/02/27
SELECT CONVERT(char(8), getdate(), 11)
7、輸出格式:20080227
SELECT CONVERT(char(8), getdate(), 112)
8、輸出格式:080227
SELECT CONVERT(char(6), getdate(), 12)