SQLServer裏面的一些時間處理

//獲取系統當前時間
select getdate();

select cast(getdate() as datetime);

//比較當天的時候
select * from table_name where 
(cast(adddate as datetime)-getdate())< 0 and (cast(adddate as datetime)-getdate())>-1;

select * from table_name where 
(cast(adddate as datetime))>= CONVERT(varchar, getdate(), 101) 

select CONVERT(varchar, getdate(), 120);//輸出:2012-01-13 14:41:03
select CONVERT(varchar, getdate(), 101);//輸出:01/13/2012


DATEDIFF函數[日期和時間]

--------------------------------------------------------------------------------

作用:返回兩個日期之間的間隔。

語法:
DATEDIFF(date-part, date-expression1, date-expression2);

參數:
date-part:
year|quarter|month|week|day|hour|minute|second|millisecond

date-part  指定要計算其間隔的日期部分。
date-expression1  某一間隔的起始日期。從date-expression2中減去該值,返回兩個參數之間date-parts的數值。
date-expression2  某一間隔的結束日期。從該值中減去date-expression1,返回兩個參數之間date-parts的數值。

示例:
下面的語句返回1:
SELECT datediff(hour, '4:00AM','5:50AM')

下面的語句返回102:
SELECT datediff(month, '1987/05/02','1995/11/15')

下面的語句返回0:
SELECT datediff(day, '00:00', '23:59')

下面的語句返回4:
SELECT datediff(day, '1999/07/1900:00', '1999/07/2323:59')

下面的語句返回0:
SELECT datediff(month,'1999/07/19','1999/07/23')

下面的語句返回1:
SELECT datediff(month,'1999/07/19','1999/08/23')

用法:
此函數計算兩個指定日期之間日期部分的數值。結果爲日期部分中等於(date2-date1)的有符號的整數值。
當結果不是日期部分的偶數倍時,DATEDIFF將被截斷而不是被舍入。
當使用day作爲日期部分時,DATEDIFF返回兩個指定的時間之間(包括第二個日期但不包括第一個日期)的午夜數目。
當使用month作爲日期部分時,DATEDIFF返回兩個日期之間(包括第二個日期但不包括第一個日期)月中第一天的數目。
當使用week作爲日期部分時,DATEDIFF返回兩個日期(包括第二個日期但不包括第一個日期)之間星期日的數目。

對於更小的時間單位存在溢出值:
milliseconds  24天
seconds  68年
minutes  4083年
others  沒有溢出限制
如果超出這些限制,此函數將返回溢出錯誤。

標準和兼容性:
SQL/92  Transact-SQL擴展。
SQL/99  Transact-SQL擴展。
Sybase  與AdaptiveServerEnterprise兼容。


MS SQL Server中的CONVERT日期格式化大全

CONVERT
將某種數據類型的表達式顯式轉換爲另一種數據類型。由於某些需求經常用到取日期格式的不同.現以下可在
SQL Server中 將日期格式化.

SQL Server 支持使用科威特算法的阿拉伯樣式中的數據格式。

在表中,左側的兩列表示將 datetimesmalldatetime 轉換爲字符數據的 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)。
** 當轉換爲 datetime 時輸入;當轉換爲字符數據時輸出。
*** 專門用於 xml。對於從 datetimesmalldatetimecharacter 數據的轉換,輸出格式如表中所示。對於從 floatmoneysmallmoneycharacter 數據的轉換,輸出等同於 style 2。對於從 realcharacter 數據的轉換,輸出等同於 style 1。

重要  默認情況下,SQL Server 根據截止年份 2049 解釋兩位數字的年份。即,兩位數字的年份 49 被解釋爲 2049,而兩位數字的年份 50 被解釋爲 1950。許多客戶端應用程序(例如那些基於 OLE 自動化對象的客戶端應用程序)都使用 2030 作爲截止年份。SQL Server 提供一個配置選項("兩位數字的截止年份"),藉以更改 SQL Server 所使用的截止年份並對日期進行一致性處理。然而最安全的辦法是指定四位數字年份。

 

當從 smalldatetime 轉換爲字符數據時,包含秒或毫秒的樣式將在這些位置上顯示零。當從 datetimesmalldatetime 值進行轉換時,可以通過使用適當的 charvarchar 數據類型長度來截斷不需要的日期部分。

下表顯示了從 floatreal 轉換爲字符數據時的 style 值。

輸出
0(默認值) 最大爲 6 位數。根據需要使用科學記數法。
1 始終爲 8 位值。始終使用科學記數法。
2 始終爲 16 位值。始終使用科學記數法。

在下表中,左列表示從 money smallmoney 轉換爲字符數據時的 style 值。

輸出
0(默認值) 小數點左側每三位數字之間不以逗號分隔,小數點右側取兩位數,例如 4235.98。
1 小數點左側每三位數字之間以逗號分隔,小數點右側取兩位數,例如 3,510.92。
2 小數點左側每三位數字之間不以逗號分隔,小數點右側取四位數,例如 4235.9819。

使用 CONVERT:

CONVERT (data_type[(length)], exPRession [, style])


select CONVERT(varchar, getdate(), 120 )
2004-09-12 11:06:08

select replace(replace(replace(CONVERT(varchar, getdate(), 120 ),\'-\',\'\'),\' \',\'\'),\':\',\'\')
20040912110608

select CONVERT(varchar(12) , getdate(), 111 )
2004/09/12

select CONVERT(varchar(12) , getdate(), 112 )
20040912

select CONVERT(varchar(12) , getdate(), 102 )
2004.09.12

select CONVERT(varchar(12) , getdate(), 101 )
09/12/2004

select CONVERT(varchar(12) , getdate(), 103 )
12/09/2004

select CONVERT(varchar(12) , getdate(), 104 )
12.09.2004

select CONVERT(varchar(12) , getdate(), 105 )
12-09-2004

select CONVERT(varchar(12) , getdate(), 106 )
12 09 2004

select CONVERT(varchar(12) , getdate(), 107 )
09 12, 2004

select CONVERT(varchar(12) , getdate(), 108 )
11:06:08

select CONVERT(varchar(12) , getdate(), 109 )
09 12 2004 1

select CONVERT(varchar(12) , getdate(), 110 )
09-12-2004

select CONVERT(varchar(12) , getdate(), 113 )
12 09 2004 1

select CONVERT(varchar(12) , getdate(), 114 )
11:06:08.177


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章