SQL查询从datetime获取月份

时间:2013-07-31 23:03:08

标签: sql

我有一个带有发票和日期时间的数据库,他们已经创建了,我希望根据每张发票的日期有一个名为月份的新列。我的意思是如果日期是2013-01-15,我想在The New columm上有“january”。 在此先感谢,我对sql知之甚少。

4 个答案:

答案 0 :(得分:1)

如果您的数据库是MySQL,请尝试:

DATE_FORMAT(date, '%M')

答案 1 :(得分:1)

对于MS SQL Server使用

SELECT DATENAME(MONTH,invoiceDate)

答案 2 :(得分:0)

从datetime对象中提取月份,然后在CASE语句中使用它。

构建于此

select 
  case strftime('%m', date('now')) 
    when '01' then 'January' 
    when '02' then 'Febuary' 
    when '03' then 'March' 
    when '04' then 'April' 
    when '05' then 'May' 
    when '06' then 'June' 
    when '07' then 'July' 
    when '08' then 'August' 
    when '09' then 'September' 
    when '10' then 'October' 
    when '11' then 'November' 
    when '12' then 'December' else '' end
  as month 

我建议您复制表格的架构,为该月添加另一列。然后使用以下语句。

INSERT INTO TABLE newTable (col1, col2, col3, ..., colLast, colMonth)
SELECT col1, col2, col3, ..., colLast, 
      case strftime('%m', date('now')) 
        when '01' then 'January' 
        when '02' then 'Febuary' 
        when '03' then 'March' 
        when '04' then 'April' 
        when '05' then 'May' 
        when '06' then 'June' 
        when '07' then 'July' 
        when '08' then 'August' 
        when '09' then 'September' 
        when '10' then 'October' 
        when '11' then 'November' 
        when '12' then 'December' else '' end
      as colMonth
FROM oldTable;

然后

drop table oldTable;

然后

Some alter to change the name of the new table to the name of the old table.

答案 3 :(得分:0)

在Oracle中:

TO_CHAR(date, 'Month')