今天,在读取日期格式数据时,出现这样的格式 “ 01-10月-08 07.46.41.000000000 上午 ”,在网上找了一下,这个也是oracle的一种日期保存格式,数据都是日期类型,只是显示的结果变成这样。
1、字符型转成timestamp
SELECT
to_timestamp (
'01-10月-08 07.46.41.000000000 上午',
'dd-MON-yy hh:mi:ss.ff AM'
)
FROM
DUAL ;
2、timestamp转成date型
SELECT
CAST(
to_timestamp (
'01-10月-08 07.46.41.000000000 上午',
'dd-MON-yy hh:mi:ss.ff AM'
) AS DATE
) timestamp_to_date
FROM
DUAL ;
3、date型转成timestamp
SELECT
CAST(sysdateas TIMESTAMP) date_to_timestamp
FROM
DUAL ;
4、获取timestamp格式的系统时间
SELECT
systimestamp
FROM
DUAL ;
5、两date的日期相减得出的是天数,而两timestamp的日期相减得出的是完整的年月日时分秒小数秒
SELECT
systimestamp - systimestamp
FROM
DUAL ;
SELECT
SYSDATE- SYSDATE
FROM
DUAL ;
注:所以,timestamp要算出两日期间隔了多少秒,要用函数转换一下。
6、to_char函数支持date和timestamp,但是trunc却不支持TIMESTAMP数据类型。
7、timestamp只支持秒的小数点后面六位。
SELECT
to_char (
systimestamp,
'yyyymmdd hh24:mi:ssxff6'
)
FROM
DUAL ;
注:ssxff6也可以为ssxff7、ssxff8、ssxff9等,但只到6有效。
8、获取系统时间的语句:
SELECT
SYSDATE,
systimestamp,
to_char (
systimestamp,
'yyyymmdd hh24:mi:ssxff6'
)
FROM
DUAL ;