2008-12-28 66 views
3

我有一個DateTime,我想將它存儲在Date MySQL列中。我正在使用MySQLi並準備好語句。將PHP DateTime對象獲取爲MYSQL日期的字符串表示

當綁定參數,我不能指定日期作爲一種類型,只能是字符串和整數。

如何將DateTime轉換爲MySQL日期字符串表示形式? DateTime類中的文檔很少。

+0

幾乎將此作爲一個重複的問題關閉,然後我意識到它是不同的,我重新打開它。請原諒我的匆忙! – 2008-12-28 20:24:01

回答

3

我幾乎把它作爲Convert from MySQL datetime to another format with PHP的副本來關閉,但我認爲它實際上是相反的問題。該問題詢問如何格式化從MySQL獲取的日期,並詢問如何格式化輸入到查詢的日期。

選項1:

SELECT * FROM MyTable WHERE DateTimeCol = ? 

您可以將值格式到YYYY-MM-DD HH:MM格式MySQL的希望:

<?php $mysql_date = date('Y-m-d H:i:s', $timestamp); ?> 

然後提交作爲字符串參數來查詢。

選項2:

SELECT * FROM MyTable WHERE DateTimeCol = FROM_UNIXTIME(?) 

然後你就可以提交時間戳值作爲數字參數的查詢。

方案3:

SELECT * FROM MyTable WHERE DateTimeCol = STR_TO_DATE(?, '%m/%d/%y') 

您可以提交各種各樣的日期/時間字符串表示的,如果你指定的格式MySQL的STR_TO_DATE()功能。有關格式化代碼,請參見DATE_FORMAT()函數。

+0

不應該是'Y-m-d H:我:S'? (http://php-date.com/#mysql) – 2008-12-28 21:32:11

2

因爲用PHP5引入的DateTime類記錄很差,我不推薦使用它。我發現定期時間戳更容易處理!

但是,如果您仍想使用DateTime對象,解決方案是將對象轉換爲(unix)時間戳,然後再將它們存儲到數據庫中。從數據庫中讀取信息後,將時間戳記轉換回DateTime對象。

要從時間戳創建DateTime對象,請使用date_create()並將時間戳作爲參數。爲了讓您的對象表示從Unix Epoch開始的秒數,請使用date_format($object, 'U')(大寫U)。