2017-04-14 47 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>