数据库的日期时间函数

上一篇 / 下一篇  2016-12-29 15:05:25 / 个人分类:数据库

1、日期、时间、日期时间与时间戳

一般用Date来表示日期类型  //比如“2008-08-08”
一般用DateTime来表示日期时间类型  //比如“2008-08-08 08:00:00”
一般用TimeStamp来表示日期时间类型  //高精度的时间要求,比如“刘翔跑到终点的时间”

不同的数据库系统对日期、时间、日期时间与时间戳等数据类型的支持差异性非常大,有的数据类型在有的数据库系统中不被支持,而有的数据类型的表示精度则和其类型名称所暗示的精度不同,比如MSSQLServer 中不支持Time 类型、Oracle 中的Date 类型中包含时间信息。数据库中的日期时间函数对这些类型的支持差别是非常小的,因此在一般情况下我们将这些类型统一称为“日期时间类型”。

2、主流数据库系统中日期时间类型的表示方式

在 MYSQL、MSSQLServer 和DB2 中可以用字符串来表示日期时间类型,数据库系统会自动在内部将它们转换为日期时间类型,比如“'2008-08-08'”、“2008-08-08 08:00:00”、“08:00:00” 、“2008-08-08 08:00:00.000000”等。
在 Oracle 中以字符串表示的数据是不能自动转换为日期时间类型的,必须使用TO_DATE()函数来手动将字符串转换为日期时间类型的,比如TO_DATE('2008-08-08','YYYY-MM-DD HH24:MI:SS') 、TO_DATE('2008-08-08 08:00:00', 'YYYY-MM-DD HH24:MI:SS')、TO_DATE('08:00:00', 'YYYY-MM-DD HH24:MI:SS')等。

3、取得当前日期时间

3.1、MYSQL
SELECTNOW(),SYSDATE(),CURRENT_TIMESTAMP//包括当前日期和时间
****************
NOW() SYSDATE() CURRENT_TIMESTAMP
2008-01-12 01:13:19 2008-01-12 01:13:19 2008-01-12 01:13:19
****************

SELECTCURDATE(),CURRENT_DATE//不包括时间部分的当前日期
****************
CURDATE() CURRENT_DATE
2008-01-12 2008-01-12
****************

SELECTCURTIME(),CURRENT_TIME //不包括日期部分的当前时间
****************
CURTIME() CURRENT_TIME
01:17:09 01:17:09
****************

3.2、 MSQLServer

SELECTGETDATE()as 当前日期时间  //包括了日期、时间(精确到秒以后部分)的时间戳信息
****************
当前日期时间
2008-01-12 01:02:04.78
****************

MSSQLServer 没有专门提供取得当前日期、取得当前时间的函数,不过我们可以将GETDATE()的返回值进行处理,这里需要借助于Convert()函数

SELECT CONVERT(VARCHAR(50) ,GETDATE( ), 101) as 当前日期
****************
当前日期
01/14/2008
****************

SELECT CONVERT(VARCHAR(50) ,GETDATE(), 108) as 当前时间
****************
当前时间
21:37:19
****************

3.3、Oracle

Oracle 中没有提供取得当前日期时间的函数,不过我们可以到系统表DUAL中查询
SYSTIMESTAMP 或 SYSDATE

SELECT SYSTIMESTAMP  //通过系统表DUAL查询SYSTIMESTAMP获得当前时间戳
FROM DUAL
****************
SYSTIMESTAMP
2008-1-14 21.46.42.78000000 8:0
****************

SELECT SYSDATE   //通过系统表DUAL 查询SYSDATE获得当前日期时间
FROM DUAL
****************
SYSDATE
2008-01-14 21:47:16.0
****************

Oracle 中也没有专门提供取得当前日期、取得当前时间的函数,不过我们可以将
SYSDATE 的值进行处理,这里需要借助于TO_CHAR(date,format)函数 

SELECT TO_CHAR(SYSDATE, 'YYYY-MM-DD')  //日期时间值的日期部分
FROM DUAL
****************
TO_CHAR(SYSDATE,YYYY-MM-DD)
2008-01-14
****************

SELECT TO_CHAR(SYSDATE, 'HH24:MI:SS')  //日期时间值的时间部分
FROM DUAL
****************
TO_CHAR(SYSDATE,HH24:MI:SS)
21:56:13
****************

3.4、 DB2

DB2 中同样没有提供取得当前日期时间的函数,不过我们可以到系统表
SYSIBM.SYSDUMMY1中查询CURRENT TIMESTAMP 或 CURRENT DATE 或 
CURRENT TIME

SELECT CURRENT TIMESTAMP  //得到当前时间戳
FROM SYSIBM.SYSDUMMY1
****************
1
2008-01-14-21.58.20.01515000
****************

SELECT CURRENT DATE  //得到当前日期值
FROM SYSIBM.SYSDUMMY1
****************
1
2008-01-14
****************

SELECT CURRENT TIME  //得到当前时间值
FROM SYSIBM.SYSDUMMY1
****************
1
22:05:48
****************


以上摘自《程序员的SQL 金典》


TAG: 数据库

 

评分:0

我来说两句

Open Toolbar