SQLServer里面的一些时间处理

来源:互联网 发布:手机淘宝怎么免费注册 编辑:程序博客网 时间:2024/04/28 07:01
//获取系统当前时间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:03select 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)1101美国mm/dd/yyyy2102ANSIyy.mm.dd3103英国/法国dd/mm/yy4104德国dd.mm.yy5105意大利dd-mm-yy6106-dd mon yy7107-mon dd, yy8108-hh:mm:ss-9 或 109 (*)默认值 + 毫秒mon dd yyyy hh:mi:ss:mmmAM(或 PM)10110美国mm-dd-yy11111日本yy/mm/dd12112ISOyymmdd-13 或 113 (*)欧洲默认值 + 毫秒dd mon yyyy hh:mm:ss:mmm(24h)14114-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(***)ISO8601yyyy-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


原创粉丝点击