MySQL函数返回的代码与其代码不同

时间:2018-03-02 10:18:49

标签: mysql sql function stored-procedures

我创建了一个返回date对象的函数。

    CREATE
        FUNCTION FLOAT2DATE(
            value float
        ) RETURNS DATE RETURN str_to_date(
                cast(
                    value as char
                ),
                '%Y%m%d'
            );

当我运行代码时,一切都按预期工作 但是当我按照函数运行代码时,它没有按预期工作,并且返回了错误的值。

    SET @VALUE = 20160101;
    select FLOAT2DATE(@VALUE) as func, null as code
    union 
    select null as func , str_to_date(
                cast(
                    @VALUE as char
                ),
                '%Y%m%d'
            ) as code;

func       |code       |
-----------|-----------|
2015-12-31 |           |
           |2016-01-01 |

MySQL版

select @@version

@@version  |
-----------|
5.7.19-log |

任何想法出了什么问题?

1 个答案:

答案 0 :(得分:0)

如评论中所述,使用INT可以正常工作

CREATE
    FUNCTION FLOAT2DATE(
        value INT UNSIGNED
    ) RETURNS DATE RETURN str_to_date(
            cast(
                cast(
                    value as UNSIGNED
                )as char
            ),
            '%Y%m%d'
        );