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


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