仅显示php中的最近5天记录

时间:2016-10-10 06:46:44

标签: php mysql

我有一个网站,其中包含一个简单的PHP查询,可以毫无问题地从MYSQL表中返回记录。

$query = mysqli_query( $connection, "SELECT * FROM $shopname

我试图弄清楚如何仅根据名为" date"的字段返回最近5天的记录。日期字段是mysql中的VARCHAR类型。日期字段中日期的格式如下: 2016年8月9日下午5:52:17 。我确实从一些研究中尝试了以下查询,但这并没有返回任何内容。我做错了什么?

$query = mysqli_query( $connection, "SELECT * FROM $shopname WHERE `date` >= DATE_SUB(CURDATE(), INTERVAL 5 DAY)"); 

*重要 - 我无法将mysql字段更改为DATE。它必须是VARCHAR。

4 个答案:

答案 0 :(得分:1)

您可以在此使用STR_TO_DATE()作为VARCHAR日期格式:

示例:

$query = "SELECT * FROM $shopname 
WHERE DATEDIFF(CURDATE(), STR_TO_DATE(date,'%Y-%m-%d')) < 5";
DateFormat的

STR_TO_DATE()将用于将dateCURDATE()进行比较。

对于DateDiff,

DATEDIFF()将用于获取datecurrent date之间的日期差异。

但是,最好使用MYSQL Date format,而不是VARCHAR字段。

答案 1 :(得分:1)

假设您的vatchar日期列格式为dd-mm-yyyy,您可以通过这种方式转换日期

$query = mysqli_query( $connection, 
    " SELECT * 
      FROM $shopname 
      WHERE str_to_date(`date`, '%d-%m-%Y')  >= DATE_SUB( CURDATE(), INTERVAL 5 DAY)");

答案 2 :(得分:0)

试试这个:

SELECT * FROM TABLE t WHERE t.date >= DATE(NOW()) - INTERVAL 5 DAY

如果char类型为date

,请提供date

否则您可以使用此方法检索过去5天的数据。

SELECT name,date 
from TABLE
WHERE date >= DATE_SUB(CURDATE(), INTERVAL 5 DAY) AND date <= CURDATE()
ORDER BY date DESC

答案 3 :(得分:0)

你可以通过mysql UNIX_TIMESTAMP使用这个方法。这可以改变时间戳的时间!

$query = mysqli_query( $connection, "SELECT * FROM $shopname WHERE `date` >= UNIX_TIMESTAMP(8/9/2016 5:52:17 PM)");