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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MySQL函数返回与其代码不同的输出相关的知识,希望对你有一定的参考价值。

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

任何想法出了什么问题?

答案

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

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

以上是关于MySQL函数返回与其代码不同的输出的主要内容,如果未能解决你的问题,请参考以下文章

C语言函数返回1和返回0究竟哪个好?

C语言学习笔记C语言函数执行成功时,返回1和返回0,究竟哪个好?

C语言函数执行成功时,返回1和返回0,究竟哪个好?

将多个输出中的hls属性设置为单独的片段代码

linux中怎么查看mysql数据库版本

getActivity() 在片段上返回 null?