[英]Select * from table where date = today
需要帮助PHP / MySql。 需要选择“今天”的所有记录。
我的表有一个coloumn,它有一个unixtime标记,我想从unixtime标记=今天的表中选择。
很高兴在linux命令行上这样做只需要基本的MySql查询?
我会去SQL版本:
SELECT * FROM table WHERE DATE(timestamp_field) = CURDATE();
由于您标记了PHP,我将提供PHP答案:
list ( $y, $m, $d ) = explode('.', date('Y.m.d'));
$today_start = mktime(0, 0, 0, $m, $d, $y);
$today_end = mktime(23, 59, 59, $m, $d, $y);
// do the query with this clause:
// ... WHERE unix_timestamp BETWEEN $today_start AND $today_end
以下是正确的方法:
WHERE `date` BETWEEN UNIX_TIMESTAMP(DATE(NOW())) AND UNIX_TIMESTAMP(DATE(DATE_ADD(NOW(), 1 DAY)))
如果将来没有值(明天,明天2天等),那么它可以简化为:
WHERE `date` >= UNIX_TIMESTAMP(DATE(NOW()))
当您将date
字段类型更改为datetime
,可能的查询将是:
WHERE `date` >= DATE(NOW())
当我说“正确”时,我的意思是可以使用索引优化这些查询。 像DATE(order_time) = DATE(NOW())
类的查询不能,因为它是字段上的表达式。
SELECT * FROM table_name WHERE DATE(date)= DATE(NOW())
合适的WHERE子句可能是:
CAST( FROM_UNIXTIME( <your_field> ) AS DATE ) = CURDATE( )
SELECT * FROM tbl WHERE date >= CURDATE()
$q="select * from table where date >'".date("Y-m-d 00:00:00")."' and date <'".date("Y-m-d 23:59:59")."'";
在我的桌子上有一个datetime列,我成功使用它
SELECT * FROM orders WHERE DATE(order_time) = DATE(NOW())
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.