如何比较mysql中的英国日期

时间:2010-07-14 18:16:45

标签: mysql

我必须检查以英国日期格式dd / mm / yyyy存储在数据库中的日期是否大于给定日期,例如01/01/2010 - 最好的方法是什么?感谢

1 个答案:

答案 0 :(得分:1)

我假设您将日期存储为字符串。在这种情况下,您可能想要使用STR_TO_DATE()函数:

SELECT * 
FROM   your_table
WHERE  STR_TO_DATE(your_field, '%d/%m/%Y') > '2010-01-01';

如下面的评论中提到的@OMG Ponies,您将无法在列上使用索引来进行此类查询。因此,将日期转换为使用DATEDATETIME数据类型可能是更好的主意:

-- 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');