我使用CREATED
将日期存储在select sysdate from dual
下的数据库中,它会存储值9/12/2012 9:26:05 AM
这正是我想要的。
但是,当我使用PHP检索信息时(例如$query[0]['CREATED']
),它返回12-SEP-12
我该怎样防止这种情况?
答案 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;