2012-09-12 50 views
1

我在CREATED下使用select sysdate from dual將數據存儲在數據庫中,它將存儲值9/12/2012 9:26:05 AM這正是我想要的。來自Oracle數據庫的PHP格式日期

然而,當我檢索與PHP的信息(例如$query[0]['CREATED'])返回12-SEP-12

我怎樣才能避免這種情況?

回答

1

當您檢索一個日期,它已經從一個點在時間的抽象表示轉換爲字符的字符串。如果沒有指定格式,它將使用一個默認(通常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 
+0

謝謝,這正是我所需要的。 – user1193752

1

只是爲了保持完整性,你可以有你的連接建立之初,以便從那個時候起的日期以特定的格式總是檢索,就像這樣:

// 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列的格式。

0

與SYSDATE和類型與DD-MM-YYYY轉換將返回12-09-2012

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