You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Informatica中普通日期转Julian日期及LocalTimestamp类型转JJJHHMM格式的实现方法

让我来帮你搞定这两个Informatica里的日期转换需求,都是日常ETL中很常见的场景,方法直接好用:

1. 如何将普通日期转换为Julian日期?

首先得明确你要的Julian日期是哪种格式——Informatica里常用的有两种:

  • 当年第几天(JJJ格式,3位数字):比如2021年10月29日对应302
  • 带年份的Julian格式(YYYYDDD,7位数字):比如2021年10月29日对应2021302

对应转换方法如下:

  • 如果你要JJJ格式,直接用TO_CHAR函数指定格式符'DDD'

    TO_CHAR(your_date_field, 'DDD')
    

    举个例子:TO_CHAR(TO_DATE('2021-10-29', 'YYYY-MM-DD'), 'DDD') 会返回 '302'

  • 如果你要YYYYDDD格式,用格式符'YYYYDDD'

    TO_CHAR(your_date_field, 'YYYYDDD')
    

    例子:TO_CHAR(TO_DATE('2021-10-29', 'YYYY-MM-DD'), 'YYYYDDD') 返回 '2021302'

要是你说的是那种从公元前4713年开始累计的儒略日(纯大数字),那用格式符'J'就行:

TO_CHAR(your_date_field, 'J')
2. LocalTimestamp转JJJHHMM格式

LocalTimestamp类型包含了日期和时间信息,咱们需要拆分出**当年第几天(JJJ)小时分钟(HHMM)**两部分,再拼接起来。步骤很简单:

  1. TO_CHAR提取日期部分的JJJ:TO_CHAR(your_local_ts_field, 'DDD')
  2. TO_CHAR提取时间部分的HHMM(注意用HH24表示24小时制,避免上午下午的混淆):TO_CHAR(your_local_ts_field, 'HH24MI')
  3. 把两个字符串拼接起来,用||或者CONCAT函数都可以

完整的转换表达式如下:

TO_CHAR(your_local_ts_field, 'DDD') || TO_CHAR(your_local_ts_field, 'HH24MI')

或者用CONCAT

CONCAT(TO_CHAR(your_local_ts_field, 'DDD'), TO_CHAR(your_local_ts_field, 'HH24MI'))

举个实际例子:如果你的LocalTimestamp字段值是2021-10-29 14:35:42,那么转换后会得到'3021435';如果是上午09:05的时间,会自动补零得到'3020905',完全符合你要的JJJHHMM格式。

内容的提问来源于stack exchange,提问作者Sanju

火山引擎 最新活动