我在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)
你也可以这样做:
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)
修好桌子!
添加适当DATE数据类型的新列:
ALTER TABLE `table` ADD new_date_field DATE AFTER date_field;
Run Code Online (Sandbox Code Playgroud)使用MySQL的STR_TO_DATE()函数使用旧列中保留的日期填充该新列:
UPDATE `table` SET new_date_field = STR_TO_DATE(date_field, '%d-%m-%Y');
Run Code Online (Sandbox Code Playgroud)删除旧列(如果需要,将其重命名为新列):
ALTER TABLE `table` DROP date_field, CHANGE new_date_field date_field DATE;
Run Code Online (Sandbox Code Playgroud)更改您的应用程序以使用此新列.