MySQL:将多个varchar格式转换为DateTime

时间:2010-12-08 22:23:26

标签: php sql mysql

我正在尝试将具有多种格式的varchar日期转换为标准的DateTime格式,以便我可以比较它们之间的日期。我写了一个SQL语句,我相信它是在正确的轨道上,但我知道SQL太少,无法发现错误。我当前的代码错误了。这就是我所拥有的:

    DELIMITER //

    CREATE FUNCTION CUSTOM_DATE_CONVERT ( d VARCHAR(50) )
      RETURNS DATETIME

      BEGIN
        DECLARE date DATETIME;

        IF STR_TO_DATE

( d, "%Y-%m-%d %H:%i:%s" ) IS NOT NULL THEN SET date = STR_TO_DATE( d, "%Y-%m-%d %H:%i:%s" );
    ELSE
        IF STR_TO_DATE( d, "%H:%i:%s %b %d, %Y" ) IS NOT NULL THEN SET date = STR_TO_DATE( d, "%H:%i:%s %b %d, %Y" );
            END IF;
        RETURN date;
      END//

    DELIMITER ;

    SELECT id, CUSTOM_DATE_CONVERT( payment_date ) FROM `paypal_table` 

我的错误是:

#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 12 

我是否在正确的轨道上?非常感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

您似乎忘了加入ENDIF

IF STR_TO_DATE ... THEN SET date = STR_TO_DATE( d, "%Y-%m-%d %H:%i:%s" );
ELSE
    IF ...THEN SET date = STR_TO_DATE( d, "%H:%i:%s %b %d, %Y" );
    END IF; /* close second if */
END IF;     /* close first if  */

请参阅example