簡體   English   中英

用mysql查詢中的php time()函數計算兩個日期之間的差異

[英]calculate difference between two date with php time() function in mysql query

我搜索過這個,但我找不到任何東西。

我有一張文章表。 當我寫新文章時,我使用php time()函數將時間寫入mysql表。

我的桌子是

id文章時間

時間數據類型為INT(UNSIGNED)

我的問題是我想展示從上周到今天或從上個月到今天的文章。

我的mysql查詢應該如何?

通常我這樣做

SELECT * FROM articles ORDER BY Time DESC

所以這給了我從今天到過去的數據。 我該怎么做? 我無法想出解決方案。 我應該一起使用php-mysql還是只用mysql來處理這個問題? 你能給我一些想法或例子嗎? 謝謝。

編輯:

我按照建議更改為datetime,現在我認為我有時區問題

現在我的前()函數工作晚了2個小時。

<?php 
date_default_timezone_set('Europe/Istanbul'); //timezone function 
ago($time)
{
   $periods = array("saniye", "dakka", "saat", "gün", "hafta", "ay", "yıl", "baya");
   $lengths = array("60","60","24","7","4.35","12","10");

   $now = time();

       $difference     = $now - $time;
       $tense         = "önce";

   for($j = 0; $difference >= $lengths[$j] && $j < count($lengths)-1; $j++) {
       $difference /= $lengths[$j];
   }

   $difference = round($difference);

   return "$difference $periods[$j] önce ";
} //ago function 

echo $Date = ago(strtotime($data['WriteTime'])). 'önce';
?>

假設您的time列是Unix時間戳,您可以嘗試這樣的事情:(未測試)

SELECT ... 
FROM magic
WHERE `time` BETWEEN DATE_SUB(FROM_UNIXTIME(`time`), INTERVAL 1 WEEK) AND NOW()

對於您的月份,您將使用INTERVAL 1 MONTH 請將您的列轉換為常用數據類型,不要使用保留字作為列名。

首先讓time成為date type field (並為其提供一個有意義的不同名稱,例如article_date

然后使用此查詢:

SELECT  * FROM    articles 
WHERE   article_date BETWEEN CURDATE() - INTERVAL 7 DAY AND CURDATE()

好吧,你在使用unix時間戳整數存儲在數據庫中時犯了一個初學者的錯誤。 您應該幾乎總是使用日期/日期時間字段類型,因為您總是需要查詢這些字段,這些字段在不使用unix時間戳時更容易。

因此,將您的字段轉換為datetime,使用MySQL的NOW()在添加行時將當前時間戳插入字段。

然后查看MySQL數據/時間函數,以便根據您的心願查詢字段。

http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM