teradata - 如何使用计算的间隔添加/减去日期/时间组件?

标签 teradata

我想让它在 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

但是,我收到了 Expected something like a string or a Unicode character blah blah 的错误消息.似乎您必须像这样对间隔进行硬编码:
select current_timestamp + interval '4' day

是的,我知道我在第一个示例中对其进行了硬编码,但这只是为了演示计算结果。

如果您必须知道,我必须将几个表中的所有日期和时间转换为 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

您必须实际将 case 语句的返回值转换为间隔。我什至不知道 Teradata 中存在间隔类型。感谢此页面对我的帮助:

http://www.teradataforum.com/l081007a.htm

关于teradata - 如何使用计算的间隔添加/减去日期/时间组件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17097141/

相关文章:

docker - Teradata 数据库 Docker 镜像

sql - 将时间戳字段的分钟和秒组件设置为 0

hadoop - 用于 Teradata 的 HDFS

scala - 在 Spark 中将数据帧写入 Teradata

sql - 在 Teradata 中使用 COLLECT STATISTICS

Teradata LEFT() 函数问题

sql - Teradata 中的 DECIMAL 类型

Python Teradata 自动递增以 6 位数字而不是 1 开头?

sql - 创建表但如果表已经存在则删除它

vba - 无法使用 VBA 代码从 Excel 连接到 Teradata - 无法通过网络访问 Teradata 服务器