从表中选择*,其中date = today

时间:2010-10-01 10:03:06

标签: php mysql

需要PHP / MySql的帮助。需要选择“今天”的所有记录。

我的表有一个coloumn,它有一个unixtime标记,我想从unixtime标记=今天的表中选择。

很高兴在linux命令行上这样做只需要基本的MySql查询吗?

8 个答案:

答案 0 :(得分:13)

我会选择SQL版本:

SELECT * FROM table WHERE DATE(timestamp_field) = CURDATE();

答案 1 :(得分:3)

由于您标记了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

答案 2 :(得分:3)

以下是正确的方法:

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())这样的查询不能,因为它是一个表达式。

答案 3 :(得分:2)

SELECT * FROM table_name WHERE DATE(date)= DATE(NOW())

答案 4 :(得分:1)

合适的WHERE子句可能是:

CAST( FROM_UNIXTIME( <your_field> ) AS DATE ) = CURDATE( )
  • FROM_UNIXTIME() - 转换为MySQL DATETIME
  • CAST(AS DATE) - 只获取日期部分
  • CURDATE() - 获取当前日期

答案 5 :(得分:1)

SELECT * FROM tbl WHERE date >= CURDATE()

答案 6 :(得分:1)

$q="select * from table where date >'".date("Y-m-d 00:00:00")."' and date <'".date("Y-m-d 23:59:59")."'";

答案 7 :(得分:1)

在我的桌子上有一个datetime列,我成功使用了

 SELECT * FROM orders WHERE DATE(order_time) = DATE(NOW())