我正在尝试查询mysql数据库以返回自昨天以来发生的所有记录。我的mysql版本是5.5.41(Ubuntu)。这是我没有返回记录的查询:
select * from table_name
where column_name between subdate(CURDATE(), 1) and CURDATE();
我也尝试了这个,没有结果:
SELECT sum(column_name BETWEEN subdate(current_date(), 1) and current_date()) AS Total FROM table_name;
我应该补充一点,我运行此查询的column_name采用以下格式:2015年2月12日(18:25)
注意:看起来这是格式化问题。我已经运行了这个日期时间格式:
$old = date('d M Y (h:i)');
$old_timestamp = strtotime($old);
$new_date = date('Y-m-d H:i:s', $old_timestamp);
但是当 echo $ old 渲染时:2015年7月24日(09:20), echo $ new_date 输出错误的时间(1970-000:00:00)
答案 0 :(得分:0)
试试这个:
SELECT *
FROM table_name
WHERE column_name BETWEEN UNIX_TIMESTAMP(subdate(current_date, 1))
AND UNIX_TIMESTAMP(current_date));
答案 1 :(得分:0)
SELECT * FROM tablename WHERE TIMESTAMPDIFF(DAY, dateInserted, NOW()) < 1
有问题的记录需要在其上设置适当的日期时间才能实现此功能 - 在我的示例中,我已将列提供为dateInserted
有关TIMESTAMPDIFF()
https://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_timestampdiff
答案 2 :(得分:0)
正如我所想,我的第一个问题是我的日期被认为是一个字符串;因此必须进行一些格式化以将日期部分识别为正式日期格式。然后我可以使用任意数量的函数,包括subdate()
函数。否则,任何字符串的默认输出都是1970-000:00:00。这对我有用:
$date=date('Y-m-d');
$olddate = date('d M Y', strtotime($date .' -1 day'));
$sql = "SELECT * FROM table_name WHERE SUBSTRING(column_name,1,11)=".$olddate;