我正在使用不支持SQL RIGHT()函数的旧AS400,并且我需要使用SQL根据最右边的X个字符选择行,该X个最右边的字符可能是7个或8个字符长的数字。

如果我不能使用RIGHT并且我不知道数字的确切长度,我怎么能得到我想要的东西?

这是一些有用的上下文:

该数字是日期,但存储为数字,因此数据库会删除第一个零,从而导致从零开始的日期(例如01032016 [读取为01-03-2016]会被修剪为1032016)。

数据库很大,因此在不过滤此字段的情况下请求所有行会占用大量资源和时间。

将数据库中日期的格式更改为更合理的格式会导致我不维护的软件发生重大更改,这是关键任务。

最佳答案

它支持取模吗?

输入:1032016

// Outputs: 2016
YOURDATEASINT % 10000 AS Year

MOD(YOURDATEASINT, 10000) AS Year

// Outputs: 32016
YOURDATEASINT % 1000000 AS MonthYear

MOD(YOURDATEASINT, 1000000) AS MonthYear

// Outputs: 1032016
YOURDATEASINT % 100000000 AS DayMonthYear

MOD(YOURDATEASINT, 100000000) AS DayMonthYear

09-27 12:17