Запросить количество строк в базе данных на сегодняшнюю дату? - PullRequest
0 голосов
/ 31 октября 2011

Как я могу выбрать количество строк в базе данных, если тип varchar?

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

не будет работать, поскольку он не хранится в datetime, есть ли другой способ?

2011-10-30 19:14:32

Это то, что хранится

Ответы [ 4 ]

2 голосов
/ 31 октября 2011

Вы можете использовать

SELECT * FROM `orders` WHERE DATE(`order_date`) = CURDATE()
1 голос
/ 31 октября 2011

Лучше всего было бы изменить тип 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, если он есть.

1 голос
/ 31 октября 2011

Используйте функцию datediff в sql ....

Что-то вроде

SELECT * FROM table WHERE DATEDIFF(day, StartDate, GETDATE()) <= 0
1 голос
/ 31 октября 2011

Поскольку order_date является VARCHAR, попробуйте:

WHERE LEFT(order_date, 10) = CURDATE()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...