2016-03-07 110 views
1

我得从我的DB这个选择:的MySQL如何使用STR_TO_DATE功能

SELECT 
    `Atleta`, 
    `Medaglia`, 
    `Sport`, 
    `Evento`, 
    `Olimpiade`, 
    STR_TO_DATE(`DataGara`, '%d/%m/%y') as Data, 
    `Categoria` 
FROM `ItalianAthletes` 
WHERE Medaglia <> '' 
order by Data asc 

以前我做了场 'DataGara' 为VARCHAR使用此格式(255):DD/MM/YYYY。

我想在输出相同的格式,但我得到YYYY-MM-DD格式,具有错误的一年,怎么一回事,因为今年值为1900,但我得到2019

我想代替与db相同的格式,即dd/mm/yyyy和正确的年份值。

+0

请提供您的表格定义和样本值。 –

+0

格式代码区分大小写。 –

+0

无论如何,我建议你在开始获取像'2016-02-31','3/4/16','今天早些时候'或'不知道'之类的存储数据之前修正列类型。 –

回答

1

这里是你如何使用STR_TO_DATE(字符串,format_mask)。退房http://www.techonthenet.com/mysql/functions/str_to_date.php

mysql> SELECT STR_TO_DATE('February 01 2014', '%M %d %Y'); 
Result: '2014-02-01' 

mysql> SELECT STR_TO_DATE('March,8,2014', '%M,%e,%Y'); 
Result: '2014-03-08' 

mysql> SELECT STR_TO_DATE('Friday, February 28, 2014', '%W, %M %e, %Y'); 
Result: '2014-02-28' 

mysql> SELECT STR_TO_DATE('2014,2,28 09', '%Y,%m,%d %h'); 
Result: '2014-02-28 09:00:00' 

mysql> SELECT STR_TO_DATE('2014,2,28 09,30,05', '%Y,%m,%d %h,%i,%s'); 
Result: '2014-02-28 09:30:05' 

mysql> SELECT STR_TO_DATE('10,15,30', '%h,%i,%s'); 
Result: '10:15:30'