AS400中将日期转换为字符

发布于 2024-09-29 18:58:18 字数 240 浏览 2 评论 0原文

我正在尝试将当前日期 - 2 个月转换为 yyyymmdd 格式并从中减去 1900000。

Oracle 对我来说很容易

SELECT  TO_CHAR(ADD_MONTHS(SYSDATE,-2),'YYYYMMDD') - 19000000 FROM DUAL 

有人可以建议我对 AS400 进行同样的操作吗?

提前致谢。

I am trying to convert the current date - 2 months into format yyyymmdd and subtract 1900000 from it.

Oracle was easy for me

SELECT  TO_CHAR(ADD_MONTHS(SYSDATE,-2),'YYYYMMDD') - 19000000 FROM DUAL 

Can some one suggest me the same for AS400 .

Thanks in advance.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

韬韬不绝 2024-10-06 18:58:18

这应该可以解决问题:

select char(((year(d)-1900) * 100 + month(d)) * 100 + day(d))    
from (select (curdate() - 2 months) as d from sysibm/sysdummy1) s

或者如果您更喜欢在没有嵌套选择的情况下执行相同的操作:

select char(((year(curdate() - 2 months) - 1900) * 100 
        + month(curdate() - 2 months)) * 100 
        + day(curdate() - 2 months))   
from sysibm/sysdummy1

干杯

That should do the trick:

select char(((year(d)-1900) * 100 + month(d)) * 100 + day(d))    
from (select (curdate() - 2 months) as d from sysibm/sysdummy1) s

or if you prefer to do the same without nested select:

select char(((year(curdate() - 2 months) - 1900) * 100 
        + month(curdate() - 2 months)) * 100 
        + day(curdate() - 2 months))   
from sysibm/sysdummy1

Cheers

千と千尋 2024-10-06 18:58:18

最简单的可能是:

SELECT DEC(REPLACE(CHAR(CURDATE() - 2 MONTHS,ISO),'-',''))-19000000 FROM SYSIBM/SYSDUMMY1

一些想法可能会挖掘出更好的东西。但无论如何,事情都不会变得简单很多。

Simplest might be:

SELECT DEC(REPLACE(CHAR(CURDATE() - 2 MONTHS,ISO),'-',''))-19000000 FROM SYSIBM/SYSDUMMY1

Some thought might dig out something better. but it won't get a lot simpler no matter what.

秋千易 2024-10-06 18:58:18

选择
DEC(SUBSTR(CHAR(日期(NOW()) - 2个月), ISO), 1, 4)||
SUBSTR(CHAR(日期(NOW()) - 2个月), ISO), 6, 2)||
SUBSTR(CHAR(日期(NOW()) - 2个月), ISO), 9, 2), 8, 0) - 19000000
来自双

SELECT
DEC(SUBSTR(CHAR(DATE(NOW()) - 2 MONTHS), ISO), 1, 4)||
SUBSTR(CHAR(DATE(NOW()) - 2 MONTHS), ISO), 6, 2)||
SUBSTR(CHAR(DATE(NOW()) - 2 MONTHS), ISO), 9, 2), 8, 0) - 19000000
FROM DUAL

云淡月浅 2024-10-06 18:58:18

这是一个有点晚的答案,但应该可以解决问题:)

select char((year(curdate() - 2 months) * 100          
    + month(curdate() - 2 months)) * 100           
    + day(curdate() - 2 months))                   
from sysibm/sysdummy1                                  

这几乎与 karol.mlot 的答案相同,但是,由于您要求 YYYYMMDD,您将获得正确的格式

This is a litte late answer, but should do the trick :)

select char((year(curdate() - 2 months) * 100          
    + month(curdate() - 2 months)) * 100           
    + day(curdate() - 2 months))                   
from sysibm/sysdummy1                                  

This is almost the same as karol.mlot's answer, however, you will be getting the right format since you asked for YYYYMMDD

嘿哥们儿 2024-10-06 18:58:18
EVAL numericField = %dec(%date(alphaDate:*MDY/):*MDY)

char 字段后面的 parm 必须是 char 字段的格式(我使用 *MDY 和“/”作为示例)。

表达式末尾的参数必须是数字字段的格式。
因此,此示例将 11/22/2008 转换为 11222008。

如果您希望将 2008-11-22 转换为 20081122,请将两个参数设置为 *ISO。

EVAL numericField = %dec(%date(alphaDate:*MDY/):*MDY)

The parm following the char field must be the format of the char field (I used *MDY with "/"for an example).

The parm at the end of the expression must be the format of the numeric field.
So this example converts 11/22/2008 to 11222008.

If you want 2008-11-22 converted to 20081122 make both parms *ISO.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文