如何根据字段值添加一定的天数

How to add a certain number of days based on field value

我正在创建一个视图来转换我们为 dates/times 获得的一些值。 (我已经算出时间了。)在这个 table 中,日期的格式是“12-31-1840 之后的天数”。我正在尝试创建一个显示实际 dates/times 而不是这种格式的视图。这是我目前所拥有的:

CASE WHEN UPPER(FLWSHT_MEAS_NM) LIKE '%DATE' THEN TO_CHAR(DATE '1840-12-31' + INTERVAL ACUTE_MEASURE_VALUE DAY)

我知道这是添加日期的正确语法,因为我可以让视图使用它:

CASE WHEN UPPER(FLWSHT_MEAS_NM) LIKE '%DATE' THEN TO_CHAR(DATE '1840-12-31' + INTERVAL '30' DAY)

我的问题是,如何根据 ACUTE_MEASURE_VALUE 字段添加特定的天数?我无法 运行 代码得到 运行 时间错误,因为它作为语法错误出现。

来自 Teradata 文档:

Teradata SQL extends the ANSI SQL:2011 standard to allow the operations of adding or subtracting a number of days from an ANSI DATE value. Teradata SQL treats the number as an INTERVAL DAY value.

我假设您的字段 ACUTE_MEASURE_VALUE 已经在您的 table 中并且是一个整数。 INTERVAL 和 DAY 这两个词是间隔规范的一部分 constants - 这是一个变量,从语法上讲你不使用这些关键字。

...TO_CHAR(DATE '1840-12-31' + ACUTE_MEASURE_VALUE)...

只需删除 INTERVAL 关键字和 DAY 关键字即可。

顺便问一下,你为什么要在这里使用 To_Char()?通过将其转换为字符串,它会阻止使用此视图的任何人在此日期执行计算。如果您将视图保留为 DATE 格式,则此视图中的任何后续 Select 在操作此数据字段时都具有更大的灵活性。