天天看點

SQL SERVER 中日期格式化,及GETDATE()、CONVERT()函數使用說明

1. date和datetime類型的差別

date是SQL Server 2008新引進的資料類型。它表示一個日期,不包含時間部分,可以表示的日期範圍從公元元年1月1日到9999年12月31日。隻需要3個位元組的存儲空間。

dateTime 日期和時間部分,可以表示的日期範圍從公元1753年1月1日00:00:00.000 到9999年12月31日23:59:59.997 ,精确到3.33毫秒,它需要8個位元組的存儲空間。

2. GETDATE()函數,傳回目前日期時間(datetime類型)

SELECT GETDATE();
傳回
2017-03-16 09:10:08.947
           

例如建立表格M

CREATE TABLE [dbo].[M](
    [id] [int] NULL,
    [日期] [date] NULL,
    [時間] [datetime] NULL
) ON [PRIMARY]
           

可以使用GETDATE()函數插入資料

INSERT INTO M(id, 日期, 時間) VALUES (1, CONVERT(VARCHAR, GETDATE(), 110), GETDATE());
           

3. CONVERT()函數,格式化日期

CONVERT() 函數是把日期轉換為新資料類型的通用函數,也可以用不同的格式顯示日期/時間資料。

文法:

CONVERT(data_type(length),date,style)
           
  • data_type(length) 規定目标資料類型(帶有可選的長度)。date指需要轉換的值。style 規定日期/時間的輸出格式。
  • 可以使用的 style 值:目前時間2017年1月3日 09:09:10:037
Style ID SQL 對應格式
1 SELECT CONVERT(varchar(100), GETDATE(), 1); 01/03/17
2 SELECT CONVERT(varchar(100), GETDATE(), 2); 17.01.03
3 SELECT CONVERT(varchar(100), GETDATE(), 3); 03/01/17
4 SELECT CONVERT(varchar(100), GETDATE(), 4); 03.01.17
5 SELECT CONVERT(varchar(100), GETDATE(), 5); 03-01-17
6 SELECT CONVERT(varchar(100), GETDATE(), 6); 03 01 17
7 SELECT CONVERT(varchar(100), GETDATE(), 7); 01 03, 17
8 SELECT CONVERT(varchar(100), GETDATE(), 8); 09:09:10
9 SELECT CONVERT(varchar(100), GETDATE(), 9); 01 3 2017 9:09:10:037AM
10 SELECT CONVERT(varchar(100), GETDATE(), 10); 01-03-17
11 SELECT CONVERT(varchar(100), GETDATE(), 11); 17/01/03
12 SELECT CONVERT(varchar(100), GETDATE(), 12); 170103
13 SELECT CONVERT(varchar(100), GETDATE(), 13); 03 01 2017 09:09:10:037
14 SELECT CONVERT(varchar(100), GETDATE(), 14); 09:09:10:037
20 SELECT CONVERT(varchar(100), GETDATE(), 20); 2017-01-03 09:09:10
21 SELECT CONVERT(varchar(100), GETDATE(), 21); 2017-01-03 09:09:10.037
22 SELECT CONVERT(varchar(100), GETDATE(), 22); 01/03/17 9:09:10 AM
23 SELECT CONVERT(varchar(100), GETDATE(), 23); 2017-01-03
24 SELECT CONVERT(varchar(100), GETDATE(), 24);
25 SELECT CONVERT(varchar(100), GETDATE(), 25);
100 SELECT CONVERT(varchar(100), GETDATE(), 100); 01 3 2017 9:09AM
101 SELECT CONVERT(varchar(100), GETDATE(), 101); 01/03/2017
102 SELECT CONVERT(varchar(100), GETDATE(), 102); 2017.01.03
103 SELECT CONVERT(varchar(100), GETDATE(), 103); 03/01/2017
104 SELECT CONVERT(varchar(100), GETDATE(), 104); 03.01.2017
105 SELECT CONVERT(varchar(100), GETDATE(), 105); 03-01-2017
106 SELECT CONVERT(varchar(100), GETDATE(), 106); 03 01 2017
107 SELECT CONVERT(varchar(100), GETDATE(), 107); 01 03, 2017
108 SELECT CONVERT(varchar(100), GETDATE(), 108);
109 SELECT CONVERT(varchar(100), GETDATE(), 109);
110 SELECT CONVERT(varchar(100), GETDATE(), 110); 01-03-2017
111 SELECT CONVERT(varchar(100), GETDATE(), 111); 2017/01/03
112 SELECT CONVERT(varchar(100), GETDATE(), 112); 20170103
113 SELECT CONVERT(varchar(100), GETDATE(), 113);
114 SELECT CONVERT(varchar(100), GETDATE(), 114);
120 SELECT CONVERT(varchar(100), GETDATE(), 120);
121 SELECT CONVERT(varchar(100), GETDATE(), 121);
126 SELECT CONVERT(varchar(100), GETDATE(), 126); 2017-01-03T09:09:10.037
130 SELECT CONVERT(varchar(100), GETDATE(), 130); 5 ???? ?????? 1438 9:09:10:037AM
131 SELECT CONVERT(varchar(100), GETDATE(), 131); 5/04/1438 9:09:10:037AM