我有YYYYMM-Example 201204格式的月份列,我需要将其分为两列(2012)和月(04)????
我试过使用Ltrim& Rtrim分手但没有真正工作。
答案 0 :(得分:0)
这需要字符串操作,这些操作因数据库而异。一种典型的方法是:
select substr(col, 1, 4) as yyyy, substr(col, 5, 2) as mm
在某些数据库中,该函数为substring()
。大多数数据库都支持substr()
或substring()
。
答案 1 :(得分:0)
尝试
select yyyy = datepart( year , t.datetime_column ) ,
mm = datepart( month , t.datetime_column ) ,
...
from dbo.some_table t
或者
select yyyy = year( t.datetime_column ) ,
mm = month( t.datetime_column ) ,
...
from dbo.some_table t
或者,如果列是字符串:
select yyyy = convert(int, left( t.some_column , 4 ) ) ,
mm = convert(int, right( t.some_column , 2 ) ) ,
...
from dbo.some_table t
where t.some_column like '[0-9][0-9][0-9][0-9][0-9][0-9]'
答案 2 :(得分:0)
假设Oracle(因为没有指定)和varchar / char这将是另一种选择:
select
extract(year from (to_date('201204', 'yyyymm'))) year,
extract(month from (to_date('201204', 'yyyymm'))) month
from dual;
首先,转换为日期,然后使用提取功能获取月份和年份。假设月总是两个字符和第四年。