像許多人一樣,我完全被PHP和MySQL中的許多日期函數所困惑。我需要的是能夠在MySQL中存儲日期,並能夠以可讀的格式在屏幕上查看它,使用標準Web表單在月份,年份或兩者上進行搜索,或者對其進行排序數月或數年。PHP/MySQL的存儲和搜索日期
示例搜索將是過去5年中febuary的所有記錄。
我有一個javascript日曆,輸入表格中的月份作爲02-12-2011。
什麼是最好的格式來使用這個。 MySQL中該字段應該是什麼。
感謝
像許多人一樣,我完全被PHP和MySQL中的許多日期函數所困惑。我需要的是能夠在MySQL中存儲日期,並能夠以可讀的格式在屏幕上查看它,使用標準Web表單在月份,年份或兩者上進行搜索,或者對其進行排序數月或數年。PHP/MySQL的存儲和搜索日期
示例搜索將是過去5年中febuary的所有記錄。
我有一個javascript日曆,輸入表格中的月份作爲02-12-2011。
什麼是最好的格式來使用這個。 MySQL中該字段應該是什麼。
感謝
在MySQL的列類型應該是date
。
這是一個日期,因此將其存儲爲DATE列。您可以在SQL查詢中使用UNIX_TIMESTAMP()或在PHP中使用strtotime,將其轉換回可以傳遞給php date()函數的值,以輸出任何您想要的格式日期。
請使用DateTime對象。
將日期存儲在mysql中作爲DATE
格式。
寫入數據時
$date = new DateTime($_POST['date']);
or
$date = DateTime::createFromFormat('d-m-Y', $_POST['date']);
$query = sprintf("INSERT INTO `data` SET `date` = '%s'", $date->format('Y-m-d'))
當讀取數據營造一個DateTime對象。
$date = new DateTime($row['date']);
然後你可以用任何你想要的格式打印它,你的JavaScript的格式:
echo $date->format('d-m-Y');
見
http://www.php.net/manual/en/class.datetime.php
和日期格式:
http://www.php.net/manual/en/function.date.php
至於搜索去,你可以在字段中使用MySQL的日期函數。
對於過去5年2月的所有記錄。
SELECT * FROM `data` WHERE MONTH(`date`) = 2 AND YEAR(`date`) >= YEAR(NOW()) - 5
http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html
另外,請注意'DateTime'類僅適用於PHP> = 5.3.0 – galymzhan 2011-02-23 03:52:35
它實際上在5.2以後可用,但是其中一些功能是5.3+ – Jacob 2011-02-23 03:55:47
這就是我所擁有的功能,但它引起了一些問題,這就是我問的原因。首先:MySQL將日期存儲爲YYYY-MM-DD,javascript將其輸入爲DD-MM-YYYY(這正是我所希望的)。我正在轉換它,但真正的痛苦。另一個問題是這個。在這可能是一個空的領域,我希望它只是空的,但我猜是因爲它是一個日期字段,如果沒有什麼東西,它會自動輸入0000-00-000,這會混淆視聽。 – confused 2011-02-23 08:05:12
所以在PHP端你需要將其轉換爲你想要的格式將被格式化爲'YYYY-MM-dd'(你可以做到這一點在MySQL太直接,但一般你不想這樣做,除非你需要在查詢中直接執行某種日期數學/比較) – prodigitalson 2011-02-23 02:18:53