我在php中有關於日期的緊急問題。我想在特定日期之前查詢某些記錄的數據庫,例如我想在30天內記錄,所以首先是我得到當前日期,並且我想計算日期範圍的另一端,我該怎麼做?我需要在MySQL查詢或在PHP中做到這一點?非常感激!如何在php中生成日期
回答
你可以很容易地在mysql中做到這一點。
例如。
SELECT * from myTable where date_column > date_sub(now(), interval 30 day);
now()或CURRENT_TIMESTAMP - >會給你一個當前日期的值。 date_sub
和date_add
是用於從給定日期加上或減去間隔 的函數。
文檔瀏覽: http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_date-add
您可以生成PHP這樣的當前日期:
$current_date = date("Y-m-d"); // the output will be in the format YYYY-MM-DD
echo $current_date;
您可以瞭解更多關於PHP日期和時間格式在這裏:http://php.net/manual/en/function.date.php
你可以還使用WEEK()和MONTH()從DB表中選擇某些行。我昨天問了一個有關它的問題:MySQL: Select data from a table where the date falls in the current Week and current Month
希望它解決了你的問題。
在php中構建間隔通常被認爲是比使用MySQL內置函數(如NOW()
)更好的做法。這有一個很好的理由。
假設您使用查詢使用NOW()
(SELECT t.foo, t.bar FROM table t WHERE created_at > DATE_SUB(NOW(), interval 30 day);
)。該函數返回一個精確到最後一秒的日期(例如'2006-04-12 13:47:36'
)。緩存這個查詢是沒有用的,因爲它僅僅是這個1秒的時間值得。
大多數應用程序幾乎不需要這個級別的準確性,通常1天的準確性就足夠好了。您已經可以看到,以較低的準確性構建查詢會更有利,因爲結果首次被緩存,並且任何後續查詢都會在緩存中一整天。
這裏是PHP
$pdo = new \PDO($dsn, $db_user, $db_pass);
$sql = 'SELECT t.foo, t.bar FROM table t WHERE t.created_at >= ?';
$stmt = $pdo->prepare($sql);
$stmt->bindValue(1, date('Y-m-d', strtotime('-30 days')));
$stmt->execute();
一個例子有關PDO的更多信息,請看看documentation
- 1. 在PHP中生成日期
- 2. 在PHP中生成日期字符串
- 3. 如何生成日期付款日期
- 4. 如何生成日期
- 5. 如何生成日期在SQL Server
- 6. Asp.net日曆 - 生成日期
- 7. 如何從日期字符串生成範圍日期在Python中?
- 8. 如何生成日期系列以在谷歌BiqQuery中佔據缺席日期?
- 9. 在JodaTime中生成日期範圍
- 10. 把生成日期放在框中
- 11. 在Hive SQL中生成日期
- 12. 如何生成兩個日期之間的所有日期
- 13. 在php中生成前七天的日期
- 14. 在PHP中轉換從fullcalendar生成的日期時區問題
- 15. 如何在objective-c中生成一個隨機日期?
- 16. 如何在計劃中生成缺失的日期?
- 17. 如何在Go lang中生成隨機日期?
- 18. 如何在shell中創建日期生成器?
- 19. 在mysql/php中生成每週日曆
- 20. 生成每週日期
- 21. 生成日期了多列
- 22. 生成隨機日期
- 23. 生成日期列表
- 24. 生成約會(日期)
- 25. SQL生成一組日期
- 26. 如何隨機生成特定的日期之間的日期在MySQL
- 27. 如何在兩個日期之間生成隨機日期和時間?
- 28. 如何僅在PHP中顯示日期?
- 29. 如何在php中分隔日期
- 30. 我如何在php中計算日期
這取決於你是否保存日期在你的數據庫作爲UNIX時間戳或作爲MySQL的DATE( TIME)類型 – knittl
是的,我在mysql中存儲日期類型字段 – Michael