知道为什么在将日期转换为varchar后丢失时间戳(FYI:数据类型是rpd中的datetime) 如果我有约会日期;
date = 5/2/2011 9:18:26 AM CAST(日期为varcchar(100))给出5-2-2011,时间部分丢失。
不知道这个的原因,任何人都可以给我一些解释
根据Oracle官方文档的CAST指令,应该允许这样的强制转换。
答案 0 :(得分:5)
取决于NLS_DATE_FORMAT:
SQL> alter session set nls_date_format = 'fmdd-mm-yyyy';
Session altered.
SQL> select cast(sysdate as varchar2(100)) from dual;
CAST(SYSDATEASVARCHAR2(100))
---------------------------------------------------------------------
14-1-2014
1 row selected.
SQL> alter session set nls_date_format = 'fmdd-mm-yyyy fmhh24:mi:ss';
Session altered.
SQL> select cast(sysdate as varchar2(100)) from dual;
CAST(SYSDATEASVARCHAR2(100))
---------------------------------------------------------------------
14-1-2014 14:17:43
1 row selected.
最好使用TO_CHAR,因为a_horse_with_no_name已经建议。
答案 1 :(得分:3)
cast (date as varchar2)
将使用当前有效的nls_date_format,默认情况下不包含时间。
要获得时间,您需要设置nls_date_format:
alter session set nls_date_format='yyyy-mm-dd hh24:mi:ss';
或者,不改变会话:
to_char(date,'yyyy-mm-dd hh24:mi:ss')