2011-10-31 25 views
0

如何选择数据库中的行数量,如果类型是varchar?查询选择数据库中当前日期的行数?

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

不会工作,因为它不存储在日期时间有没有其他方式?

2011-10-30 19:14:32 

是什么是存储

回答

2

您可以使用

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

由于order_date是VARCHAR,试着用:在SQL

WHERE LEFT(order_date, 10) = CURDATE() 
1

使用datediff功能....

喜欢的东西

SELECT * FROM table WHERE DATEDIFF(day, StartDate, GETDATE()) <= 0 
1

最佳将改变order_datedate类型和使用:

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(如果有的话)。