MySQL STR_TO_DATE问题

时间:2011-09-01 01:15:35

标签: mysql

我有一个查询的以下部分:

STR_TO_DATE(CONCAT(g.Year,',',g.Month,',',g.Day),'%Y,%m,%d') AS HelpDate 

g当然是一张表。我知道g.Year,g.Month和g.Day的值都很好,因为如果我取出STR_TO_DATE调用并且只使用:

CONCAT(g.Year,',',g.Month,',',g.Day) AS HelpDate 

它工作正常。出于某种原因,mysql因添加STR_TO_DATE而中断。据我所知,这应该有效。我甚至试图对日期进行严格编码,以强制它确保我没有疯狂:

STR_TO_DATE('2011,9,2','%Y,%m,%d') AS HelpDate 

这既不起作用

编辑:

确定。所以STR_TO_DATE对我来说根本不起作用的原因是因为服务器运行的是MySQL 4.0。我已经将数据库移动到MySQL5服务器。现在,这是我的问题。 STR_TO_DATE只有在我不尝试连接表引用时才有效。例如,这两个工作:

STR_TO_DATE('2011,9,2','%Y,%m,%d') AS HelpDate
STR_TO_DATE(CONCAT('2011',',','9',',','2'),'%Y,%m,%d') AS HelpDate

然而,这仍然没有:

STR_TO_DATE(CONCAT(g.Year,',',g.Month,',',g.Day),'%Y,%m,%d') AS HelpDate

我收到此错误:

#1305 - FUNCTION db380975735.STR_TO_DATE does not exist 

db38097573是数据库的名称

2 个答案:

答案 0 :(得分:2)

您正在寻找格式'%Y,%c,%e'%m%d匹配以零开头的月/日(它将匹配2011,09,02)。

顺便说一下,分别存储年,月和日的重点是什么?将其存储在DATE类型中,并在必要时使用YEAR(),DAY()和MONTH()函数。

答案 1 :(得分:0)

尝试使用:

STR_TO_DATE('2011,9,2','%Y,%c,%e') AS HelpDate 

%m%d假设使用前导零进行格式化,即总是两位数的数字。因此STR_TO_DATE('2011,09,02','%Y,%m,%d') AS HelpDate可能会起作用。 %c%e分别指代可变长度的数字月份和日期。