我想让它在Teradata中工作:
更新SQL以获得更好的示例
select
case
when
current_date between
cast('03-10-2013' as date format 'mm-dd-yyyy') and
cast('11-03-2013' as date format 'mm-dd-yyyy')
then 4
else 5
end Offset,
(current_timestamp + interval Offset hour) GMT
Run Code Online (Sandbox Code Playgroud)
但是,我得到了一个错误Expected something like a string or a Unicode character blah blah.看来你必须像这样硬编码间隔:
select current_timestamp + interval '4' day
Run Code Online (Sandbox Code Playgroud)
是的,我知道我在第一个例子中对其进行了硬编码,但这只是为了证明计算结果.
如果您必须知道,我必须将几张桌子中的所有日期和时间转换为GMT,但我必须考虑夏令时.我在东部,所以如果日期在DST时间范围内,我需要增加4小时,否则增加5小时.
我知道我可以为每个句点创建单独的更新语句,并相应地将值从4更改为5,但我希望我的查询是动态和智能的.
这是解决方案:
select
case
when
current_date between
cast('03-10-2013' as date format 'mm-dd-yyyy') and
cast('11-03-2013' as date format 'mm-dd-yyyy')
then 4
else 5
end Offset,
(current_timestamp + cast(Offset as interval hour)) GMT
Run Code Online (Sandbox Code Playgroud)
您必须实际将case语句的返回值转换为间隔.我甚至不知道Teradata中存在的区间类型.感谢这个页面帮助我:
http://www.teradataforum.com/l081007a.htm
| 归档时间: |
|
| 查看次数: |
35874 次 |
| 最近记录: |