2017-01-11 34 views
2

日期的星期幾,一個月的日期列的數據類型是char(10)。所以每個日期都以'02/01/2016 /'這樣的字符串形式存儲。MYSQL:我怎麼能從日期的數據類型是字符(10)

如何在mysql中從'02/01/2016'中獲得星期幾和星期幾?

+0

按星期做你的意思是如星期三?你嘗試過什麼嗎? –

+0

這不會回答你的問題,但是如果你將日期存儲爲字符數據,那麼你的模式會被嚴重破壞。如果你使用date/datetime – paxdiablo

+0

可能很容易。謝謝 – claudios

回答

1

使用STR_TO_DATE函數將字符串轉換爲DATE數據類型,然後使用DATE_FORMAT函數。

SELECT DATE_FORMAT(STR_TO_DATE('02/01/2016', '%m/%d/%Y'), '%w') AS dow 
    , DATE_FORMAT(STR_TO_DATE('02/01/2016', '%m/%d/%Y'), '%c') AS moy 

(格式說明需要匹配的字符串格式。該演示假設字符串在月/日/年的格式,這代表2月1日,而不是1月2日)。

如果你想返回一個字符串,如 '星期一',在地方使用'%W''%w'


MySQL參考手冊:

http://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html#function_date-format

http://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html#function_str-to-date

+0

它可以很容易地修復那個可憎的問題,而不是嘗試各種SQL體操來解決它.-) – zoeylong

0

由於@paxdiablo評論說,你應該認真考慮存儲您的日期信息datedatetimetimestamp。也就是說,如果您必須接受當前的設置,您可以先解析文本,使用STR_TO_DATE()解析日期,然後使用DATE_FORMAT()提取字符串星期幾和月份名稱。像這樣的東西應該工作:

SELECT DATE_FORMAT(STR_TO_DATE(date, '%d/%m/%Y'), '%W') AS day_of_week, 
     DATE_FORMAT(STR_TO_DATE(date, '%d/%m/%Y'), '%M') AS month_of_year 
FROM yourTable 

演示在這裏:

SQLFiddle

+0

它的工作原理。謝謝 – zoeylong

+0

嗨Zoey,upvote可能嗎? –

相關問題