如果类型是varchar,我如何从数据库中选择行数?
SELECT * FROM `orders` WHERE DATE(`order_date`) = DATE(NOW())
无法正常工作,因为它没有存储在日期时间还有其他任何方式吗?
2011-10-30 19:14:32
存储的是什么
答案 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
的索引。