【问题标题】:CURDATE functionality from db2 query来自 db2 查询的 CURDATE 功能
【发布时间】:2018-02-28 14:35:45
【问题描述】:

我正在尝试将“curdate()”功能应用到来自 DB2 的 select 语句。我已经习惯了 MySQL,但我仍在尝试掌握许多 DB2 功能以及如何将两者结合起来。

我的查询是完整的,除了一行。我正在尝试根据发货日期进行选择,即EXTD1H 列,我需要对照今天或 curdate() 检查它。问题是 DB2 中的列是整数格式,而不是日期格式,我没有更改它的选项。在之前对 mysql 的插入中,我已经能够将它放入 Y-m-d 格式并且我知道我可以使用 LEFT(EXTD1H, 4) 来修剪年份,但我不知道如何修改我的选择以便我可以说 WHERE EXTD1H is today所以我只选择这个日期的记录。

这是查询:

select 
  invnoz as ORDER,
  fstatz as STATUS 
from gportafl
  /*where EXTD1H is curdate, hypothetically*/ 
  AND FSTATZ <> 'S'
  limit 20;

如您所见,我的问题所在有一条注释行。我确定这很简单,我似乎无法在文档中找到我正在寻找的确切内容,即能够使用该 INT 列来验证所选记录是否来自今天。

更新:

列中的所有值都采用 YYYYMMDD 格式,即 20180202 但应该是2018-02-02

【问题讨论】:

  • 在 EXTD1H 列中显示一个整数值的示例及其匹配的日历日期,即 YYYYMMDD 是否始终以数字表示,必要时在 MM 和 YY 上使用前导零?
  • DATE 究竟如何表示为INT
  • 我刚刚更新了这些值。基本上,该列“代表”日期,但它是一个标准字符列,在这种情况下它是一个 INT

标签: mysql sql db2


【解决方案1】:

最好不要对列进行操作,所以使用索引。 您可以按如下方式对当前日期进行类型转换以适合您的数据:

WHERE extd1h = INTEGER(VARCHAR_FORMAT(CURRENT DATE,'YYYYMMDD'))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-03-11
    • 1970-01-01
    • 2013-04-12
    • 1970-01-01
    • 1970-01-01
    • 2013-06-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多