db2 忽略查询选择WHERE子句中TIMESTAMP字段的秒部分

mitkmikd  于 2023-03-02  发布在  DB2
关注(0)|答案(3)|浏览(249)

样本数据:
2018年12月12日10时59分59.892秒
如何查询上述数据并忽略":59. 892"部分。
原因:如果用户输入10:59搜索参数,我希望返回10:59:00 - 10:59:59的记录。

wrrgggsh

wrrgggsh1#

一种方法是使用BETWEEN predicate,它相当于您在问题中提供的内容:时间戳10:59:00到时间戳10:59:59之间的记录。
你也可以先检查日期,然后再检查时间。或者你从有问题的时间戳中减去你期望的时间戳(2018-12-12 10:59:00),它需要小于1分钟。许多选项...为了简单起见,使用BETWEEN。

vsaztqbk

vsaztqbk2#

如果mytab(ts)上有索引:

with 
  mytab (ts) as
(
  values
    '2018-12-12-10.59.59.892'::timestamp(12)
  , '2018-12-12-11.00.00.000'::timestamp(12)
  , '2018-12-12-11.00.00.000'::timestamp(12) - 0.000000000001 second
)
, userinput (ts) as
(
  values
    '2018-12-12-10.59.00'::timestamp
)
select t.ts
from mytab t
join userinput u on
      t.ts >= u.ts
  and t.ts < u.ts + 1 minute

| 运输系统|
| - ------|
| 2018年12月12日10:59:59.89亿美元|
| 2018年12月12日10时59分59秒|
fiddle

xqk2d5yq

xqk2d5yq3#

另一种简单的方法是这样使用TRUNC_TIMESTAMP

where TRUNC_TIMESTAMP(yourtimestamp, 'MI') = timestamp '2018-12-12 10:59:00.000'

相关问题