将日期转换为密钥失败

艾伦·L

我已经搜寻了源,并且尝试过的每个版本都失败了。基本上,此函数需要一个日期,并且应该返回数字。

例如:2010年4月1日,将返回为-20160401,这似乎很简单,但这却花费了我数小时的时间。

CREATE OR REPLACE FUNCTION MAKE_KEY( DT DATE ) RETURN NUMBER IS

DATE_KEY NUMBER := 0;
yyyy SMALLINT := 2000;
mm SMALLINT := 1;
dd SMALLINT := 1;

BEGIN
        IF DT IS NOT NULL THEN
            yyyy := YEAR(DT);
            mm := MONTH(DT);
            dd := DAY(DT);
        END IF; 
        DATE_KEY := (-1 * (yyyy * 10000 + mm * 100 + dd));

        RETURN  DATE_KEY;

END MAKE_KEY;   
温弗里德(Wernfried Domscheit)

最简单,最短的解决方案是:

CREATE OR REPLACE FUNCTION MAKE_KEY( DT DATE ) RETURN NUMBER IS
BEGIN
   RETURN TO_CHAR(DT, '-YYYYMMDD');
END;

您甚至不需要此功能,可以TO_CHAR(DT, '-YYYYMMDD')直接在SQL或PL / SQL中使用。

它将为日期返回不同的结果,BC但是我认为这与您的情况无关,否则RETURN -1*TO_CHAR(DT, 'YYYYMMDD');

如果你需要0NULL输入,你可以做COALESCE(TO_CHAR(NULL, '-YYYYMMDD'),0)

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

将Instagram的“ created_time”密钥转换为实际日期

来自分类常见问题

将“小时”列转换为日期时间失败

来自分类Dev

如果将datetime列转换为日期(rails),则not in失败

来自分类Dev

使用TOP和WHERE将失败的Varchar转换为日期

来自分类Dev

将“小时”列转换为日期时间失败

来自分类Dev

如果将datetime列转换为日期(rails),则not in失败

来自分类Dev

将日期转换为日期

来自分类Dev

将日期转换为日期

来自分类Dev

SQL Server:将日期时间转换为字符串而不丢失密钥

来自分类Dev

尝试按日期筛选表时,“将varchar值转换为int时转换失败”

来自分类Dev

将varchar值'-'转换为日期类型INT时转换失败

来自分类Dev

将周数转换为日期

来自分类Dev

将日期转换为POSIXct

来自分类Dev

将数字转换为日期

来自分类Dev

将日期转换为秒

来自分类Dev

将数值转换为日期

来自分类Dev

将文字转换为日期

来自分类Dev

将天数转换为日期

来自分类Dev

将数据转换为日期

来自分类Dev

将字符转换为日期

来自分类Dev

将周数转换为日期

来自分类Dev

将数字转换为日期

来自分类Dev

将日期转换为varchar

来自分类Dev

将日期格式转换为

来自分类Dev

将LocalDateTime转换为日期

来自分类Dev

将 DAAppearanceTime 转换为日期

来自分类Dev

将字符串转换为密钥

来自分类Dev

将WEP密钥转换为密码

来自分类Dev

使用密钥将熊猫转换为 json