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)**两部分,再拼接起来。步骤很简单:
- 用
TO_CHAR提取日期部分的JJJ:TO_CHAR(your_local_ts_field, 'DDD') - 用
TO_CHAR提取时间部分的HHMM(注意用HH24表示24小时制,避免上午下午的混淆):TO_CHAR(your_local_ts_field, 'HH24MI') - 把两个字符串拼接起来,用
||或者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




