来自Oracle数据库的PHP格式的日期

时间:2012-09-12 14:15:55

标签: php oracle

我使用CREATED将日期存储在select sysdate from dual下的数据库中,它会存储值9/12/2012 9:26:05 AM这正是我想要的。

但是,当我使用PHP检索信息时(例如$query[0]['CREATED']),它返回12-SEP-12

我该怎样防止这种情况?

3 个答案:

答案 0 :(得分:3)

为了完整起见,您可以在开头设置连接,从那时起始终以特定格式检索日期,如下所示:

// Typical connection boilerplate
$conn_string = $config['engine'] . ':host=' . $config['host'] . ';port=' . $config['port'] . ';dbname=' . $config['dbname'] . ';charset=utf8';

$db = new PDO($conn_string,
    $config['username'],
    $config['password']
);

$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

// This is where you prepare your session
// For your case, the format should be 'dd/mm/yyyy hh:mi:ss am' as stated on the previous answers
$db->query("ALTER SESSION SET NLS_DATE_FORMAT = 'DD/MM/YYYY HH24:MI:SS'");

通过这种方式,您可以执行常规SELECT *,而无需每次都担心特定DATE列的格式。

答案 1 :(得分:2)

当您检索日期时,它必须从时间点的抽象表示转换为字符串。如果您未指定格式,则默认情况下将使用一种格式(通常为NLS_DATE_FORMAT):

SQL> select sysdate from dual;

SYSDATE
---------
12-SEP-12

如果您需要特定格式,则必须使用转换功能,例如TO_CHAR

SQL> SELECT to_char(sysdate, 'dd/mm/yyyy hh:mi:ss am') dt FROM DUAL;

DT
----------------------
12/09/2012 04:25:04 pm

答案 2 :(得分:0)

使用sysdate转换并使用DD-MM-YYYY键入将返回12-09-2012

select field name, TO_CHAR(sysdate, 'DD-MM-YYYY') AS sysdate from database name;