如何使用'date'字段查询两个日期之间的字符串?

jII*_*jII 3 mysql phpmyadmin

我在MySQL数据库中有一个表,其中有一个名为'Date'的字段,问题是日期格式为DD-MM-YYYY,所以我无法将其作为DATE类型字段上传到MySQL.而是字段类型是字符串.考虑到这一点,我如何编写将产生这种效果的查询 -

SELECT * FROM `table` 
WHERE  (date_field BETWEEN '2010-01-30' AND '2010-09-29')
Run Code Online (Sandbox Code Playgroud)

请记住'date_field'不是DATE类型,而是字符串.

jue*_*n d 15

SELECT * FROM `table` 
WHERE str_to_date(date_field, '%d-%m-%Y') BETWEEN '2010-01-30' AND '2010-09-29'
Run Code Online (Sandbox Code Playgroud)

SQLFiddle示例

编辑

你也可以这样做:

SELECT * FROM `table` 
WHERE cast(substring(date_field, 7, 4) as unsigned) * 10000 + cast(substring(date_field, 4, 2) as unsigned) * 100 + cast(substring(date_field', 1, 2) as unsigned)
BETWEEN 20100130 AND 20100929
Run Code Online (Sandbox Code Playgroud)


egg*_*yal 8

修好桌子!

  1. 添加适当DATE数据类型的新列:

    ALTER TABLE `table` ADD new_date_field DATE AFTER date_field;
    
    Run Code Online (Sandbox Code Playgroud)
  2. 使用MySQL的STR_TO_DATE()函数使用旧列中保留的日期填充该新列:

    UPDATE `table` SET new_date_field = STR_TO_DATE(date_field, '%d-%m-%Y');
    
    Run Code Online (Sandbox Code Playgroud)
  3. 删除旧列(如果需要,将其重命名为新列):

    ALTER TABLE `table` DROP date_field, CHANGE new_date_field date_field DATE;
    
    Run Code Online (Sandbox Code Playgroud)
  4. 更改您的应用程序以使用此新列.