如何在 db2 中将时间戳转换为 ISO 格式的日期?

wkm*_*wkm 3 db2

例如,如果数据库中有一个字段的值为:2010-10-20-12.00.00.000000

如何获得包含20101020.

所以我可以做这样的事情:

SELECT * FROM file WHERE DATE(timestamp) BETWEEN 20101020 AND 20101031
Run Code Online (Sandbox Code Playgroud)

但这似乎不起作用。DATE()不以 ISO 格式返回。

pax*_*blo 5

我一直认为 ISO 格式的日期是yyyy-mm-dd. 这是我们从 DB2 得到的表达式:

char (date_column,iso)
Run Code Online (Sandbox Code Playgroud)

但我认为您的情况不需要它,您应该能够这样做:

SELECT * FROM file where date(timestamp) between 20101020 and 20101031
Run Code Online (Sandbox Code Playgroud)

进入:

select *
    from file
    where timestamp >= '2010-10-20-00:00:00.000000'
      and timestamp <= '2010-10-31-00:00:00.000000'
Run Code Online (Sandbox Code Playgroud)

这可能会运行得更快,因为您不需要对数据库中的每一行进行计算(如果 DBMS 不够智能,无法改变您的查询,这将是性能杀手)。

换句话说,唯一的计算是在查询运行之前,其中这些文本字段将转换为时间戳。