2017-04-14 45 views
-1

MySQL的部分日期我有一些局部日期在日期時間欄

像2017-12(Y-M) 或2017-45(Y-W)

是有可能將其存儲在在MySQL日期時間列?

+0

的可能的複製[如何轉換日期時間爲varchar(http://stackoverflow.com/問題/ 74385 /如何轉換日期時間到varchar) –

+0

http://stackoverflow.com/questions/74385/how-to-convert-datetime-to-varchar –

+0

添加一個月的第一天或第一天 本週 – etsa

回答

0

使用STR_TO_DATE()函數像這樣:

SELECT STR_TO_DATE(CONCAT('2017-12','-01'),'%Y-%m-%d'); 


SELECT STR_TO_DATE(CONCAT(SUBSTRING_INDEX('2017-45', '-', 1),'-01-01'),'%Y-%m-%d') 
     + INTERVAL SUBSTRING_INDEX('2017-45', '-', -1) -1 WEEK; 

樣品

mysql>  SELECT STR_TO_DATE(CONCAT('2017-12','-01'),'%Y-%m-%d'); 
+-------------------------------------------------+ 
| STR_TO_DATE(CONCAT('2017-12','-01'),'%Y-%m-%d') | 
+-------------------------------------------------+ 
| 2017-12-01          | 
+-------------------------------------------------+ 
1 row in set (0,00 sec) 

mysql>  SELECT STR_TO_DATE(CONCAT(SUBSTRING_INDEX('2017-45', '-', 1),'-01-01'),'%Y-%m-%d') 
    ->   + INTERVAL SUBSTRING_INDEX('2017-45', '-', -1) -1 WEEK; 
+------------------------------------------------------------------------------------------------------------------------------------------------+ 
| STR_TO_DATE(CONCAT(SUBSTRING_INDEX('2017-45', '-', 1),'-01-01'),'%Y-%m-%d') 
      + INTERVAL SUBSTRING_INDEX('2017-45', '-', -1) -1 WEEK | 
+------------------------------------------------------------------------------------------------------------------------------------------------+ 
| 2017-11-05                                  | 
+------------------------------------------------------------------------------------------------------------------------------------------------+ 
1 row in set (0,01 sec) 

mysql>