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 当前日期
****************
****************
SELECT CONVERT(VARCHAR(50) ,GETDATE(), 108) as 当前时间
****************
****************
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获得当前日期时间
****************
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 TIMESELECT CURRENT TIMESTAMP //得到当前时间戳
FROM SYSIBM.SYSDUMMY1
****************
1
2008-01-14-21.58.20.01515000
****************
SELECT CURRENT DATE //得到当前日期值
FROM SYSIBM.SYSDUMMY1
****************
****************
SELECT CURRENT TIME //得到当前时间值
FROM SYSIBM.SYSDUMMY1
****************
****************