分组日期,给定varchar(字符串)

时间:2013-02-26 13:39:55

标签: mysql sql date group-by

我获得了一个数据库,其中包含一个包含属性“datum”(varchar(25))的表。由于数据库设计不佳,此列填充了字符串格式的日期值,例如:

  

'2013年2月25日,3:47 p'

我需要查询表并按天分组所有行(在上面的示例中为25)。 我应该使用DATE_FORMAT(基准,'')函数来执行此操作吗?每当我使用该函数时,我都会得到空值。

2 个答案:

答案 0 :(得分:2)

您是否尝试过STR_TO_DATE()功能(documentation)?

它是DATE_FORMAT()的反转,它将日期值作为其第一个参数,而不是字符串。然后,您可以使用它来获取正确的日期值。

这是一个与您的查询匹配的SQL命令,我测试并运行。

SELECT * 
FROM tablename 
WHERE DATE_FORMAT( STR_TO_DATE(datum,'%M %e, %Y, %h:%i %p'), '%d' ) = 25;

答案 1 :(得分:2)

由于它是一个字符串,您应该使用STR_TO_DATE

将其转换为有效的日期值
SELECT  *
FROM    tableName
WHERE   STR_TO_DATE(datum,'%M %e, %Y, %h:%i %p') ....

两者之间的区别:

STR_TO_DATE - 将字符串转换为日期
DATE_FORMAT - 将日期转换为字符串