SQL yyyymm日期格式

时间:2014-04-16 18:34:54

标签: sql date time split

我有YYYYMM-Example 201204格式的月份列,我需要将其分为两列(2012)和月(04)????

我试过使用Ltrim& Rtrim分手但没有真正工作。

3 个答案:

答案 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;

首先,转换为日期,然后使用提取功能获取月份和年份。假设月总是两个字符和第四年。