我有一个以这种格式存储日期的表格:
2016/7/29 00:00:00
我需要的是向用户显示一天内的所有数据,例如
+-------+-------------+---------------------+
| id | product | date |
+-------+-------------+---------------------+
| 1 | one |7/27/2016 9:29:14 AM |
| 2 | two |7/28/2016 7:53:42 AM |
| 3 | three |7/28/2016 9:53:24 PM |
+-------+-------------+---------------------+
所以我想回复:在2016年7月28日,记录了2个新产品。 我怎样才能做到这一点?
这是包含数据类型的字段:
+------------------+------------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+------------------+------------------+------+-----+---------+----------------+
| id | int(10) unsigned | NO | PRI | NULL | auto_increment |
| product | varchar(255) | NO | MUL | NULL | |
| date | varchar(255) | NO | MUL | NULL | |
+------------------+------------------+------+-----+---------+----------------+
日期以c#中的DateTime格式存储。 我曾尝试过:
SELECT * FROM products where date between '7/29/2016 00:00:00 AM' and '7/29/2016 11:59:00 PM';
不起作用。但是,当我提出这个时:
SELECT * FROM products where date between '7/01/2016 00:00:00 AM' and '7/31/2016 11:59:00 PM';
它返回当月的产品。
答案 0 :(得分:2)
这个MySQL查询应该适合你:
SELECT * FROM products
WHERE date >= '2016-07-28 00:00:00' AND date < '2016-07-29 00:00:00'
或使用BETWEEN
:
SELECT * FROM products
WHERE date BETWEEN '2016-07-28 00:00:00' AND '2016-07-28 23:59:59'
如果您的日期字段当前存储为字符串,只需先使用STR_TO_DATE
转换:
SELECT * FROM products
WHERE STR_TO_DATE(date, '%c/%e/%Y %h:%i:%s %p') BETWEEN '2016-07-28 00:00:00' AND '2016-07-28 23:59:59'
或者,如果您只想要一天(并且在日期字段上有索引),只需使用LIKE
语法来使用这些索引:
SELECT * FROM products
WHERE date LIKE '7/28/2016 %'
答案 1 :(得分:0)
SELECT * FROM Table_Name
WHERE date BETWEEN 'startdatetime' AND 'enddatetime'
此查询可能适用于您。