0

I have simple problem with SQL query.. I would like to search fields, where dates begin and ends in specific date and time.

Field is defined as CHAR and have structure: DD.MM.YYYY hh:mm:ss and I cannot change it.

I tried to declare some variables and search by this, also tried by Converting.

This is what I tried and didn't work:

SELECT date FROM table WHERE date BETWEEN '1.01.2017 00:00:00' AND '1.02.2017 23:59:59'

SELECT date FROM table WHERE date >= '1.01.2017 00:00:00' AND date <= '1.02.2017 00:00:00'

SELECT date FROM table WHERE date >= Convert(DATETIME, '1.01.2017', 104) AND date <= Convert(DATETIME, '1.02.2017', 104)

Always after this query I get all dates, not this what I asked.

4

3 回答 3

0

您的字段不是可以按字典顺序作为字符串进行比较的格式,因此您需要将其转换为日期。但它不是 MySQL 默认可以解析的格式(它需要格式中的日期YYYY-MM-DD)。所以用STR_TO_DATE()一个格式字符串来解析它。

SELECT date
FROM table
WHERE STR_TO_DATE(date, '%d.%m.%Y %H:%i:%s') BETWEEN '2017-01-01 00:00' AND '2017-01-02 23:59:59'
于 2017-07-04T06:55:37.363 回答
0

我解决了我的问题。问题在于这些字段如何存储在数据库中。我认为它们是像这样的存储:DD.MM.YYYY hh:mm:ss,但它只是结构。在 DB 中,它们的存储方式如下:YYYYMMDDhhmmss,并且在 WHERE 查询行发生更改后,它可以工作。

SELECT date FROM table WHERE date >= '20170101000000' AND date <= '20170101235959'
于 2017-07-04T13:13:53.037 回答
-1
SELECT date FROM table WHERE STR_TO_DATE(date, '%d.%m.%Y %H:%i:%s') BETWEEN '2017-01-01 00:00:00' AND '2017-02-01 23:59:59'

或者

你可以使用STR_TO_DATE()函数。

SELECT date FROM table WHERE STR_TO_DATE(date, '%d.%m.%Y %H:%i:%s') BETWEEN STR_TO_DATE('1.01.2017 00:00:00','%d.%m.%Y %H:%i:%s') AND STR_TO_DATE('1.02.2017 23:59:59','%d.%m.%Y %H:%i:%s')

你可以试试上面的查询。

于 2017-07-04T06:54:37.003 回答