【问题标题】:DB2 Time stamp calculationDB2 时间戳计算
【发布时间】:2015-01-26 18:44:36
【问题描述】:

我收到以下查询的 sql 错误, 是不是不能写成下面这样,..

SELECT   some columns  FROM XXXXX.XXX_XXX
WHERE LAST_UPDT_DATE<=  CURRENT TIMESTAMP     
AND LAST_UPDT_DATE>= (CURRENT_TIMESTAMP -     
'2001-01-21-12.00.00.000000')              
;                            

【问题讨论】:

  • 我没有从您的查询中得到任何错误,因此请提供错误以获得进一步的帮助。
  • DSNT408I SQLCODE = -401,错误:算术或比较操作的操作数不可比较 DSNT418I SQLSTATE = 42818 SQLSTATE 返回码
  • 旁注:always use an exclusive upper-bound 具有正的连续范围类型。

标签: sql timestamp db2


【解决方案1】:

试试这个未经测试的查询:

SELECT   some columns  FROM XXXXX.XXX_XXX
WHERE LAST_UPDT_DATE between CURRENT TIMESTAMP     
AND (CURRENT_TIMESTAMP -
date(to_date('2001-01-21-12.00.00','YYYY-MM-DD HH.MI.SS'))

【讨论】:

  • Jens .. 我认为你的代码会给出 curr_ts-date 。我需要更准确.. 并且需要减去 curr_ts - 一个旧的时间戳 ..:)
【解决方案2】:

通常(在标准 SQL 中),有冒号分隔小时和分钟,分钟和秒。我似乎记得 DB2 没有遵循标准,日和小时之间有空格,但我忘记了使用哪个标点符号。您还可以在字符串前面加上 TIMESTAMP 以强调/强制将其转换为 TIMESTAMP 文字。

来自DB2 10.1 Knowledge Centre

通过将值显式转换为具有指定精度的时间戳,可以为时间戳的字符串表示形式赋予不同的时间戳精度。如果字符串是常量,另一种方法是在字符串常量前面加上 TIMESTAMP 关键字。例如,TIMESTAMP '2007-03-28 14:50:35.123' 具有 TIMESTAMP(3) 数据类型。

【讨论】:

    【解决方案3】:

    对不起..我的要求不需要计算(时间戳 - 时间戳)。 查询只需为,

    SELECT   some columns  FROM XXXXX.XXX_XXX
    WHERE LAST_UPDT_DATE<=  CURRENT TIMESTAMP     
    AND LAST_UPDT_DATE>='2001-01-21-12.00.00.000000'
    ;         
    

    效果很好。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-11-04
      • 2015-08-06
      • 1970-01-01
      • 1970-01-01
      • 2022-01-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多