参数id为无符号整型:
id/10+1000000000 结果为时间戳 timestamp,再通过timestamp算出时间字符串,函数的返回值就为该时间字符串.如下例:
id=2760647183
id/10+1000000000 => 1276064718 => '2010-06-09 14:25:18'
这个函数如何写?

解决方案 »

  1.   

    mysql> set @id=2760647183;
    Query OK, 0 rows affected (0.00 sec)mysql> select FROM_UNIXTIME(@id/10+1000000000);
    +----------------------------------+
    | FROM_UNIXTIME(@id/10+1000000000) |
    +----------------------------------+
    | 2010-06-09 14:25:18              |
    +----------------------------------+
    1 row in set (0.00 sec)mysql>
      

  2.   

    版主的方法真简洁啊,
    不过我还有个问题,就是我写的这个为啥不行?DELIMITER $$
    CREATE FUNCTION info_time(infoID INT UNSIGNED) RETURNS DATETIME
    BEGIN
    DECLARE tm INT UNSIGNED;
    SET tm = infID div 10 + 1000000000;
    RETURN(FROM_UNIXTIME(tm));
    END $$
    DELIMITER ;
    创建时,出现错误:
    ERROR 1418 (HY000): This function has none of DETERMINISTIC, NO SQL, or READS SQL DATA in its declaration and binary logging is enabled (you *might* want to use the less safe log_bin_trust_function_creators variable)
      

  3.   

    根据错误提示,加上试试。DELIMITER $$
    CREATE FUNCTION info_time(infoID INT UNSIGNED) RETURNS DATETIME DETERMINISTIC
    BEGIN
        DECLARE tm INT UNSIGNED;
        SET tm = infID div 10 + 1000000000;
        RETURN(FROM_UNIXTIME(tm));
    END $$
    DELIMITER ;