如何过滤 Informix 数据库中包含按年和月时间戳的字符值?

问题描述 投票:0回答:1

我使用版本为“IBM Informix Dynamic Server Version 14.10”的 Informix 数据库。

我有一个包含 char(20) 的列。我们可以将该列称为“my_example_column”。该列的所有值都包含时间戳。

看起来像这样:

ABC_202001171317325

前 4 个字符“ABC_”与我无关。

但是,时间戳与我相关。前 4 个数字“2020”代表年份。接下来的2个数字“01”代表月份。接下来的2个数字“17”代表日子。

所以日期是 2020 年 1 月 17 日。

我想按年份和月份过滤此命名列“my_example_column”中的值。

我该怎么做?

informix
1个回答
0
投票

我找到了解决办法:

select * 
from my_example_table
where year(to_date(my_example_column[5,12], "%Y%m%d")) = 2020
and month(to_date(my_example_column[5,12], "%Y%m%d")) = 1

我通过两个索引访问“my_example_column”列。索引从 1 开始,而不是从 0 开始。第一个索引是 5,指定第一个数字。在我们的例子中,第一个数字是 2。第二个索引是 12,指定最后一个数字。在我们的例子中是第七个数字。结果我们得到20200117。

之后,我使用 to_date 方法将字符串转换为日期。

to_date(my_example_column[5,12], "%Y%m%d")

为了确定年份,我使用方法year:

year(to_date(my_example_column[5,12], "%Y%m%d"))

对于月份的确定,我使用方法month:

month(to_date(my_example_column[5,12], "%Y%m%d"))

© www.soinside.com 2019 - 2024. All rights reserved.