我只是想建立在 Richard Evans 的答案之上,但由于要发表评论的内容太多,我将把它作为一个新的答案。
IBM i 有一个本机日期类型,可以存储从 0001 年 1 月 1 日到 9999 年 12 月 31 日的日期。日期类型具有一种格式,其中指定日期的年份部分的位数。有两个主要分组会影响可接受的日期范围。两位数的年份格式,可以接受从 1940 年 1 月 1 日到 2039 年 12 月 31 日的日期。它们是:*MDY
、、、和。四位数年份格式可以处理日期类型支持的所有日期范围。这些是, , , 。*DMY
*YMD
*JUL
*ISO
*USA
*EUR
*JIS
除了在任何地方都支持日期格式的主要格式之外,RPG 还支持其他一些日期格式:*JOBRUN
、三位数字年份格式和*LONGJUL
. *JOBRUN
是两位数的年份格式,只能为具有两位数年份的数字和字符日期字段指定。这使用作业日期格式和分隔符值。三位数字年份格式可以处理从 1900 年 1 月 1 日到 2899 年 12 月 31 日的日期。它们是*CMDY
、*CDMY
和*CYMD
。C
三位数年份格式中的 表示日期的年份部分的两位最高有效数字,其中:
0 => 1900 - 1999
1 => 2000 - 2099
2 => 2100 - 2199
...
9 => 2800 - 2899
最后*LONGJUL
是四位数的儒略年格式。
内部日期以某种*ISO
格式存储。其他格式是外部格式。事实上,当使用 SQL 定义表时,您甚至不需要指定日期格式,它只是默认为 *ISO。在您可以指定格式的地方,它只是您指定的外部格式。最好*ISO
用于所有工作字段和数据库文件,即使在使用 DDS 时也是如此。然后为面向用户的字段保留其他外部格式*MDY
,以将格式转换为更本地化的格式。通过这种方式,您可以存储用户可以输入或查看的所有日期范围。*DMY
*ISO