2010-10-01 73 views
1

需要帮助PHP/MySql。需要从“今天”中选择所有记录。选择* from表where date =今天

我的表有一个coloumn,它包含一个unixtime邮票,我只想从unixtime stamp = today的表中选择。

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

回答

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 
+0

你有你的封装日期字符串中的'''或'“''一样日期( '年月日')' – RobertPitt 2010-10-01 10:41:32

2

SELECT * FROM table_name的WHERE DATE(日期)= DATE(NOW())

1

合适的WHERE子句可能是:

CAST(FROM_UNIXTIME(<your_field>) AS DATE) = CURDATE() 
  • FROM_UNIXTIME() - 转换到MySQL DATETIME
  • CAST(AS DATE) - 刚刚得到的日期部分
  • CURDATE() - 获取当前日期
13

我会去的SQL版本:

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

+3

使用DATE(FROM_UNIXTIME(timestamp_field))如果timestamp_field持有不秒钟。自1970年以来 – nos 2010-10-01 10:42:24

+1

+1虽然我也会使用'CURDATE()'或'CURRENT_DATE'而不是'DATE(NOW())' – wimvds 2010-10-01 10:45:33

+0

那里 - 我修正了它 - 现在它使用CURDATE():-) – mbanzon 2010-10-01 13:00:22

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

我的桌子上有一个日期时间栏,我用这个成功了

SELECT * FROM orders WHERE DATE(order_time) = DATE(NOW()) 
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())这样的查询 - 不能,因为它是一个表达式。