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

问题描述 投票:0回答:1

我创建了一个返回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 |

任何想法出了什么问题?

mysql sql function stored-procedures
1个回答
0
投票

就像在评论中提到的那样,使用INT它是有效的

CREATE
    FUNCTION FLOAT2DATE(
        value INT UNSIGNED
    ) RETURNS DATE RETURN str_to_date(
            cast(
                cast(
                    value as UNSIGNED
                )as char
            ),
            '%Y%m%d'
        );
© www.soinside.com 2019 - 2024. All rights reserved.