我想在Oracle查询中计算下一个工作日。因此,周一至周四应为sysdate+1
,周五应为sysdate+3
,周六应为sysdate+2
,周日应为sysdate+1
。
我想动态地做到这一点,而不是在不同的日子里有很多where语句。
where order_date = CASE WHEN (1 + TRUNC (SYSDATE) - TRUNC (SYSDATE, 'IW')) < 5
THEN TRUNC (SYSDATE) + 1
ELSE TRUNC (SYSDATE + 4), 'IW')
END
我从答案Next business day (Monday - Friday) in Oracle?中发现了这一点,但查询中似乎有错误,我无法解决。
答案 0 :(得分:1)
您可以使用to_char(sysdate, 'fmday')
返回当天的字符串名称:
where order_date =
case
when to_char(sysdate, 'fmday', 'nls_date_language=AMERICAN') = 'friday' then trunc(sysdate) + 3
when to_char(sysdate, 'fmday', 'nls_date_language=AMERICAN') = 'saturday' then trunc(sysdate) + 2
else trunc(sysdate) + 1
end
更好:
where order_date =
trunc(sysdate) + case
when to_char(sysdate, 'fmday', 'nls_date_language=AMERICAN') = 'friday' then 3
when to_char(sysdate, 'fmday', 'nls_date_language=AMERICAN') = 'saturday' then 2
else 1
end
答案 1 :(得分:0)
要获取语句的结果,请使用以下语句。
for i in range(0,j): #loop to insert date into SQL Server
source_data = data[i]["_source"]
keys = ['_source', 'nagios_service', 'nagios_host', 'nagios_author',
'nagios_severity_label', 'nagios_external_command', '@timestamp']
for key in keys:
print source_data.get(key, "Missing key: '%s'" % key)