3

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

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

我怎样才能防止这种情况?

4

3 回答 3

5

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

// 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'");

这样您就可以执行 general SELECT *,而不必每次都担心特定DATE列的格式。

于 2015-03-25T16:50:16.140 回答
3

当您检索日期时,它必须从时间点的抽象表示转换为字符串。如果您不指定格式,则默认使用一种格式(通常为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
于 2012-09-12T14:24:25.660 回答
0

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

select field name, TO_CHAR(sysdate, 'DD-MM-YYYY') AS sysdate from database name;
于 2015-11-26T09:41:04.603 回答