日期的星期幾,一個月的日期列的數據類型是char(10)。所以每個日期都以'02/01/2016 /'這樣的字符串形式存儲。MYSQL:我怎麼能從日期的數據類型是字符(10)
如何在mysql中從'02/01/2016'中獲得星期幾和星期幾?
日期的星期幾,一個月的日期列的數據類型是char(10)。所以每個日期都以'02/01/2016 /'這樣的字符串形式存儲。MYSQL:我怎麼能從日期的數據類型是字符(10)
如何在mysql中從'02/01/2016'中獲得星期幾和星期幾?
使用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
它可以很容易地修復那個可憎的問題,而不是嘗試各種SQL體操來解決它.-) – zoeylong
由於@paxdiablo評論說,你應該認真考慮存儲您的日期信息date
,datetime
或timestamp
。也就是說,如果您必須接受當前的設置,您可以先解析文本,使用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
演示在這裏:
它的工作原理。謝謝 – zoeylong
嗨Zoey,upvote可能嗎? –
按星期做你的意思是如星期三?你嘗試過什麼嗎? –
這不會回答你的問題,但是如果你將日期存儲爲字符數據,那麼你的模式會被嚴重破壞。如果你使用date/datetime – paxdiablo
可能很容易。謝謝 – claudios