【问题标题】:ADD 7 days to string formatted date将 7 天添加到字符串格式的日期
【发布时间】:2019-12-20 04:53:24
【问题描述】:

我的表格中有一个 varchar 日期,格式为 20060918,我希望能够在该日期上增加 7 天,并保持其有效(如果我尝试 +7,它会给我一个无效的日期) 这是我的代码

SELECT cast (WD.Adjusted_Hire_Date as date format 'YYYY-MM-DD')+ INTERVAL '7' DAY
from Analytics.Workday as WD;

但我遇到了一个错误

Executed as Single statement.  Failed [2666 : 22007] Invalid date supplied for Workday.Adjusted_Hire_Date. 

我应该先转换 Adjusted_Hire_Date 列吗?

【问题讨论】:

  • 字符串没有破折号,那不应该是'YYYYMMDD'吗?
  • 即使我删除了破折号,仍然出现同样的错误
  • 您是否可以选择将 VARCHAR 列转换为 DATE 列,或者它会破坏太多其他内容?
  • 很遗憾我做不到,我可以在查询中添加它吗?
  • 问题是您在该列中的值与YYYY-MM-DD 不完全相同(如果您正在使用,则为“YYYYMMDD”)。您必须先清理数据,然后才能进行投射。这就是为什么存储为字符串的日期会让每个人都感到不寒而栗的原因。

标签: teradata


【解决方案1】:
insert into Workday (employee_id,Adjusted_Hire_Date) select '3','20060918';

SELECT WD.Adjusted_Hire_Date 
  ,cast (trim(WD.Adjusted_Hire_Date) as date format 'YYYYMMDD')+ 7
from Workday as WD where employee_id=3;

Result:

[Adjusted_Hire_Date]    [Adjusted_Hire_Date+7]

20060918                9/25/2006

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-04-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多