我正在寻找一种处理友好的方法来从 2 个 VARCHAR 字段(年和月)创建日期字段,以便输出始终是输入月份的第一个。
输出格式
%Y-%m-%d
其中 %d 始终为 01当前字段
c_year
(VARCHAR),格式为“FY##”(FY22、FY23、FY24 等)c_month
(VARCHAR),格式为 3 个字母缩写(Jan、Feb、Mar)我将一些方法放在一起,但它们似乎运行得非常慢。
我想有一个比下面这样愚蠢的方法更好的方法:
SELECT date_parse(
CONCAT('20', substr(c_year, 3, 2), '-',
CASE c_month
WHEN 'Jan' THEN '01'
WHEN 'Feb' THEN '02'
WHEN 'Mar' THEN '03'
WHEN 'Apr' THEN '04'
WHEN 'May' THEN '05'
WHEN 'Jun' THEN '06'
WHEN 'Jul' THEN '07'
WHEN 'Aug' THEN '08'
WHEN 'Sep' THEN '09'
WHEN 'Oct' THEN '10'
WHEN 'Nov' THEN '11'
WHEN 'Dec' THEN '12'
END,
'-01'),
'%Y-%m-%d') AS period
FROM c_table
select
to_date(substring('FY22' from 3 for 2) || 'Jan' || '01', 'FYYY-Mon-DD');
2002-01-01
``