编辑添加了更具体的日期时间格式
我在时间和日期的组合中遇到了同样的问题。时间被忽略,因此您会得到一整天的结果。
尝试 PHP 或其他编程语言来操作 MySQL。或者按照我的建议尝试更改 CSV 文件的导入方法。
SELECT *,CAST((STR_TO_DATE(`Data/ora apertura`, '%d/%m/%Y %H.%i')) AS DATETIME)
AS DATE_TIME
FROM reportinc
WHERE (CAST((STR_TO_DATE(`Data/ora apertura`, '%d/%m/%Y %H.%i')) AS DATETIME)) >= ('2012-22-01 21:00');
SELECT *,CAST((STR_TO_DATE(`Data/ora apertura`, '%d/%m/%Y %H.%i')) AS DATETIME)
AS DATE_TIME
FROM reportinc
WHERE (STR_TO_DATE(`Data/ora apertura`, '%d/%m/%Y %H.%i')) >= ('2012-22-01 21:00');
样本数据:
CREATE TABLE reportinc (
`ID_incidente` int auto_increment primary key,
`Data/ora apertura` varchar(30)
);
INSERT INTO reportinc (`Data/ora apertura`)
VALUES
("31/07/2012 10.46"),
("31/07/2012 10.47"),
("22/01/2013 20.00"),
("23/01/2013 10.00");
SQL FIDDLE 演示
---
尝试类似:
使用强制转换功能:
SELECT * FROM reportinc WHERE (CAST(`Data/ora apertura` AS DATETIME)) >= NOW() - INTERVAL 3 hour;
使用 str_to_date 函数:
SELECT * FROM reportinc WHERE (STR_TO_DATE(`Data/ora apertura`,'%Y-%m-%d %H:%i:%s')) >= NOW() - INTERVAL 3 hour;
您对时间范围有点不清楚,所以我以 3 小时为例。您还可以使用特定的日期和时间。
使用演员表:
`SELECT * FROM reportinc WHERE (CAST(`Data/ora apertura` AS DATETIME)) >= ('2013-01-22 20:00:00');`
使用 str_to_date
SELECT * FROM reportinc WHERE (STR_TO_DATE(apertura, '%Y-%m-%d %H:%i:%s')) >= ('2013-01-21 20:00:00');
样本数据:
CREATE TABLE reportinc (
`ID_incidente` int auto_increment primary key,
`Data/ora apertura` varchar(30),
`Data/ora apertura1` datetime
);
INSERT INTO reportinc ( `Data/ora apertura`, `Data/ora apertura1`)
VALUES (NOW() - INTERVAL 1 day, NOW() - INTERVAL 1 day),
(NOW() - INTERVAL 1 hour, NOW() - INTERVAL 1 hour),
(NOW() - INTERVAL 3 hour, NOW() - INTERVAL 3 hour),
(NOW() - INTERVAL 6 hour, NOW() - INTERVAL 6 hour),
(NOW() - INTERVAL 9 hour, NOW() - INTERVAL 9 hour),
(NOW() - INTERVAL 1 year, NOW() - INTERVAL 1 year);
SQL 小提琴演示
顺便说一句,我的建议是停止在列名和表名中使用斜杠、空格等。
如果您接受对您有帮助的答案,我将不胜感激。