【发布时间】:2017-08-15 08:38:12
【问题描述】:
我正在使用 Netezza SQL。
我的数据集中有周数和年份作为组合条目。例如,“2017 年第 3 周”。我想使用这个字段来获取一周中最后一天的日期。在这种情况下,我应该得到“21-Jan-2017”。
对我该怎么做有什么想法吗?
谢谢。
【问题讨论】:
我正在使用 Netezza SQL。
我的数据集中有周数和年份作为组合条目。例如,“2017 年第 3 周”。我想使用这个字段来获取一周中最后一天的日期。在这种情况下,我应该得到“21-Jan-2017”。
对我该怎么做有什么想法吗?
谢谢。
【问题讨论】:
这是一个可能对你有用的例子:
SELECT DATE(year_num || '-01-01') + CAST(((week_num * 7) - 1) || ' DAYS' AS INTERVAL)
FROM (SELECT CAST(TRANSLATE(SUBSTR(dt, 0, INSTR(dt, ', ')), 'Week ', '') AS BYTEINT) AS week_num,
CAST(SUBSTR(dt, INSTR(dt, ', ') + 2) AS SMALLINT) AS year_num
FROM (SELECT 'Week 3, 2017' AS dt
UNION ALL
SELECT 'Week 19, 2015' AS dt
UNION ALL
SELECT 'Week 45, 2016' AS dt) _) _
【讨论】:
试试这个。
select to_date(lpad(trim(substring(data.dt,5,100)),8,'0'),'ww, YYYY') + interval '6 days' as lastDayOfWeek
from (SELECT 'Week 3, 2017' AS dt
UNION ALL
SELECT 'Week 19, 2015' AS dt
UNION ALL
SELECT 'Week 45, 2016' AS dt) data
【讨论】: