DB2:子串一个数字

DB2:子串一个数字,db2,Db2,在我的数据集中,我有一个变量(数字),它是年+月,称为年/月,值为201702、201703等 通常我的代码如下所示: select year_month ,variable2 ,variable3 from dataset select TIMESTAMP_FORMAT(cast(year_mont as varchar(6)), 'YYYYMM') as YouTimeStamp from yourtable 我希望从year\u month变量中提取月份和年份,但当year\

在我的数据集中,我有一个变量(数字),它是年+月,称为年/月,值为201702、201703等

通常我的代码如下所示:

select 
year_month
,variable2
,variable3
from dataset
select TIMESTAMP_FORMAT(cast(year_mont as varchar(6)), 'YYYYMM') as YouTimeStamp 
from yourtable   
我希望从year\u month变量中提取月份和年份,但当year\u month是数字时,我不确定如何执行此操作。
编辑:不是重复的问题,不同的问题,我不关心日期。

从整数中提取日期部分

SELECT year_month/100,MOD(year_month,100)
要将整数完全转换为日期,请执行以下操作:

SELECT TO_DATE(CHAR(year_month),'YYYYMM')

从整数中提取日期部分的步骤

SELECT year_month/100,MOD(year_month,100)
要将整数完全转换为日期,请执行以下操作:

SELECT TO_DATE(CHAR(year_month),'YYYYMM')

这种方法也有可能:

select left(cast(year_mont as varchar(6)), 4) as YYYY,                    
right(cast(year_mont as varchar(6)), 2) as MM from yourtable
您可以有这样的时间戳:

select 
year_month
,variable2
,variable3
from dataset
select TIMESTAMP_FORMAT(cast(year_mont as varchar(6)), 'YYYYMM') as YouTimeStamp 
from yourtable   
或是约会:

select Date(TIMESTAMP_FORMAT(cast(year_mont as varchar(6)), 'YYYYMM')) as YouTimeStamp 
from yourtable   

这种方法也有可能:

select left(cast(year_mont as varchar(6)), 4) as YYYY,                    
right(cast(year_mont as varchar(6)), 2) as MM from yourtable
您可以有这样的时间戳:

select 
year_month
,variable2
,variable3
from dataset
select TIMESTAMP_FORMAT(cast(year_mont as varchar(6)), 'YYYYMM') as YouTimeStamp 
from yourtable   
或是约会:

select Date(TIMESTAMP_FORMAT(cast(year_mont as varchar(6)), 'YYYYMM')) as YouTimeStamp 
from yourtable   

可能重复的。。。你为什么要这样做?如果您只想查询特定范围(例如,仅某一年),将其放入
WHERE
子句中,最好通过构造边界来实现,因为基于函数的限制通常会使索引的使用无效。如果这只是为了最后的展示,那么你应该很好。不要粗鲁,但简单的回答是:因为我可以。我正在学习,并试图尽可能多地吸收信息:)可能重复的。。。你为什么要这样做?如果您只想查询特定范围(例如,仅某一年),将其放入
WHERE
子句中,最好通过构造边界来实现,因为基于函数的限制通常会使索引的使用无效。如果这只是为了最后的展示,那么你应该很好。不要粗鲁,但简单的回答是:因为我可以。我正在学习,并尝试尽可能多地吸收信息:)int(year_month/100)as year,year_month%100 as month不起作用。只是给了我一些错误。可能是因为我的格式在db2Use中使用
MOD(a,b)
而不是
a%b
operatorint(year\u month/100)作为年份,year\u month%100作为月份不起作用。只是给了我一些错误。可能是我的格式在db2Use中使用了
MOD(a,b)
而不是
a%b
操作符