[英]How to calculate the time difference between two columns on multiple rows in PHP/MySQL
[英]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.