2013-07-31 63 views
1

我已經有一個數據庫與他們創建的發票和日期時間,我想有一個新的columm與該月的名稱根據每個發票的日期。我的意思是,如果日期是2013年1月15日,我想在The New Columm上有「1月」。 在此先感謝,我幾乎沒有關於SQL的知識。SQL查詢從日期時間獲得月

+2

必須指定的RDBMS –

+0

可能重複[從DATETIME獲取月份源碼( http://stackoverflow.com/question s/650480/get-month-date-date-in-sqlite) – JustinDanielson

+1

請務必在發佈之前進行搜索。快速搜索:「SQL查詢從datetime獲得月份名稱」出現了許多有希望的結果,例如:[在SQL Server查詢中返回月份名稱](http://stackoverflow.com/questions/5650830/returning-month-name -in-sql-server-query)。顯然包括你的數據庫類型來縮小結果。 – Leigh

回答

1

如果你的數據庫是MySQL的,請嘗試:

DATE_FORMAT(date, '%M') 
1

對於MS SQL Server中使用

SELECT DATENAME(MONTH,invoiceDate) 
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. 
0

在Oracle:

TO_CHAR(date, 'Month')