如何以Y-m-d H:i:s格式在ORACLE中保存日期?

时间:2017-02-12 17:52:17

标签: php oracle to-date

在PHP中,date('Y-m-d H:i:s')会提供'2017-02-17 23:10:00'格式的结果。

现在,我想将结果保存在 ORACLE 10g 中。我正在使用 Oracle 10g Xpress Edition

现在,我正试图像这样保存数据。

$sql = "INSERT INTO tbl_language VALUES 
(1, 'Hindi', TO_DATE('".$time."','yyyy-mm-dd hh24:mi:ss'))"; 

$time = date('Y-m-d H:i:s');

日期值将保存为12-Feb-17。 如何以期望的形式保存日期数据?

3 个答案:

答案 0 :(得分:3)

Oracle中的日期未保存为2017-02-17 23:10:00或12-Feb-17或您认为的其他格式。它以完全不同的方式存储。从数据库中选择日期时,显示日期的格式取决于会话的NLS_DATE_FORMAT设置。

如果您想以特定格式获取日期,可以使用具有所需格式的TO_CHAR函数:

select to_char(datecolumn, 'yyyy-mm-dd hh24:mi:ss') from your_table;

答案 1 :(得分:0)

当您只选择日期列时,Oracle不会显示时间组件。

试试这个:

select l.*,
       to_char(datecol, 'YYYY-MM-DD HH24:MI:SS')
from tbl_languages l;

答案 2 :(得分:0)

DATE数据类型没有格式; Oracle将其存储为7- or 8-bytes,直到将其传递给客户端程序(即SQL / Plus,SQL Developer,Toad,Java,Python等),并且客户端程序根据任何规则对其进行格式化是的,日期有格式。

如果您使用的是SQL / Plus或SQL Developer,那么它将使用NLS_DATE_FORMAT会话参数来格式化日期。 You can change this使用:

ALTER SESSION SET NLS_DATE_FORMAT = 'YYYY-MM-DD HH24:MI:SS';

(请注意,这只会更改当前会话中的格式,并且不会为任何其他会话/用户更改格式。)

如果您想以特定格式指定日期,则需要convert it to a string

SELECT TO_CHAR( date_column, 'YYYY-MM-DD HH24:MI:SS' ) AS formatted_date
FROM   tbl_language;