我必须检查以英国日期格式dd / mm / yyyy存储在数据库中的日期是否大于给定日期,例如01/01/2010 - 最好的方法是什么?感谢
答案 0 :(得分:1)
我假设您将日期存储为字符串。在这种情况下,您可能想要使用STR_TO_DATE()
函数:
SELECT *
FROM your_table
WHERE STR_TO_DATE(your_field, '%d/%m/%Y') > '2010-01-01';
如下面的评论中提到的@OMG Ponies,您将无法在列上使用索引来进行此类查询。因此,将日期转换为使用DATE
或DATETIME
数据类型可能是更好的主意:
-- Add a new DATETIME column
ALTER TABLE your_table ADD COLUMN your_new_field DATE;
-- Fill in your new column
UPDATE your_table SET your_new_field = STR_TO_DATE(your_field, '%d/%m/%Y');
-- Drop your old string column
ALTER TABLE your_table DROP COLUMN your_field;
-- Rename your new column to the previous name
ALTER TABLE your_table CHANGE your_new_field your_field DATE;
然后日期比较也会更容易:
SELECT *
FROM your_table
WHERE your_field > '2010-01-01';
如果您想使用英国格式显示日期,只需使用DATE_FORMAT()
功能,如下所示:
SELECT DATE_FORMAT(your_field, '%d/%m/%Y')
FROM your_table
WHERE your_field > '2010-01-01';
最后,如果您想将日期字段与日期字符串格式比较为英国日期,则可以再次使用STR_TO_DATE()
函数:
SELECT DATE_FORMAT(your_field, '%d/%m/%Y')
FROM your_table
WHERE your_field > STR_TO_DATE('2010-01-01', '%d/%m/%Y');