我如何将年份结合到一个日期?

发布于 2025-01-25 07:06:22 字数 383 浏览 2 评论 0原文

我正在寻找一种更简单的方法来做到这一点。我当前的代码如下:

CASE WHEN LENGTH(CAST (MTH AS VARCHAR(4))) = 1 
     THEN CAST(CAST (YR AS VARCHAR(4))||'-0'||CAST (MTH AS VARCHAR(4))||'-01' AS DATE)
     ELSE CAST(CAST (YR AS VARCHAR(4))||'-' ||CAST (MTH AS VARCHAR(4))||'-01' AS DATE)
END AS RPT_MTH

该表有一个名为YR的字段,其中4位数年。 MTH字段仅为1到12,而1-9的领先0。

是否有一种比我当前在做的事情更容易进入RPT_MTH?

I'm looking for an easier way to do this. My current code is written as below:

CASE WHEN LENGTH(CAST (MTH AS VARCHAR(4))) = 1 
     THEN CAST(CAST (YR AS VARCHAR(4))||'-0'||CAST (MTH AS VARCHAR(4))||'-01' AS DATE)
     ELSE CAST(CAST (YR AS VARCHAR(4))||'-' ||CAST (MTH AS VARCHAR(4))||'-01' AS DATE)
END AS RPT_MTH

The table has a field called YR with the 4 digit Year. MTH field is just a number 1 through 12, with no leading 0 for 1-9.

Is there an easier way to get to the RPT_MTH than what I'm currently doing?

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

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

发布评论

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

评论(3

我不吻晚风 2025-02-01 07:06:22

根据Teradata的内部日期:

cast((yr-1900) * 10000 + mth * 100 + 1 as date)

Based on Teradata's internal date:

cast((yr-1900) * 10000 + mth * 100 + 1 as date)
热情消退 2025-02-01 07:06:22

这有点短:

cast(cast(YR*10000+MTH*100+1 as char(8)) as date format 'YYYYMMDD') AS RPT_MTH

或者如果您需要坚持角色操作:

cast(cast(YR as char(4))||right('0'||cast(MTH as varchar(2)),2) as date format 'YYYYMM')

This is a little shorter:

cast(cast(YR*10000+MTH*100+1 as char(8)) as date format 'YYYYMMDD') AS RPT_MTH

Or if you need to stick to character operations:

cast(cast(YR as char(4))||right('0'||cast(MTH as varchar(2)),2) as date format 'YYYYMM')
皓月长歌 2025-02-01 07:06:22

Consider

TO_DATE(CONCAT(YR, '-', LPAD(TO_CHAR(MTH), 2, '0'), '-01'))

Consider CONCAT, LPAD, TO_CHAR and TO_DATE which may vary in support depending on your version. Default format for TO_DATE is ISO date format at: 'YYYY-MM-DD'.

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