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