查询为今天的日期选择数据库中的行数?

时间:2011-10-31 09:07:48

标签: mysql sql

如果类型是varchar,我如何从数据库中选择行数?

SELECT * FROM `orders` WHERE DATE(`order_date`) = DATE(NOW())

无法正常工作,因为它没有存储在日期时间还有其他任何方式吗?

2011-10-30 19:14:32

存储的是什么

4 个答案:

答案 0 :(得分:2)

您可以使用

SELECT * FROM `orders` WHERE DATE(`order_date`) = CURDATE()

答案 1 :(得分:1)

由于order_date是VARCHAR,请尝试使用:

WHERE LEFT(order_date, 10) = CURDATE()

答案 2 :(得分:1)

在sql ....中使用datediff函数。

这样的东西
SELECT * FROM table WHERE DATEDIFF(day, StartDate, GETDATE()) <= 0

答案 3 :(得分:1)

最好是将order_date更改为date类型并使用:

SELECT * 
FROM orders 
WHERE order_date >= CURDATE()
  AND order_date < CURDATE() + INTERVAL 1 DAY

如果将其保留为VARCHAR,则可以使用此变体:

SELECT * 
FROM orders 
WHERE order_date >= CAST( CURDATE() AS CHAR)
  AND order_date < CAST( (CURDATE() + INTERVAL 1 DAY) AS CHAR)

如果有的话,可以使用order_date的索引。