MySQL - 将日期字符串更改为日期类型?

时间:2009-09-10 23:38:54

标签: sql mysql date

(大家好。我特别喜欢SQL和MySQL。我知道一些PHP。)

我有一个包含“date_string”列的表。由于遗留原因,这是一个文本字段,包含d / m / YY格式的日期。例如2009年11月22日“2009年11月22日”。

问题:如何将此列中的所有字段转换为标准MySQL日期格式(YYYY-mm-dd),就地?

或者,由于列类型是文本,无法就地更改,我如何获取每个现有的基于文本的日期,并在另一列(类型为'date')中创建标准日期表

感谢您的帮助。

3 个答案:

答案 0 :(得分:14)

您可能想要使用STR_TO_DATE()功能。

SELECT STR_TO_DATE(textdate, '%d/%m/%y') FROM MyTable...

或者使用DATE数据类型创建另一列并复制值:

ALTER TABLE MyTable ADD COLUMN realdate DATE;
UPDATE MyTable SET realdate = STR_TO_DATE(textdate, '%d/%m/%y');

答案 1 :(得分:1)

    UPDATE your_table
    SET your_col = '20'
              + substring(your_col, 
                          LOCATE('/', your_col, LOCATE('/', your_col) + 1) + 1
                         )
              + '-'
              + substring(your_col, 
                          LOCATE('/', your_col) + 1, 
                          LOCATE('/', your_col, LOCATE('/', your_col) + 1)
                         )
              + '-'
              + substring(your_col, 1, LOCATE('/', your_col) - 1)


/*
    LOCATE('/', your_col) -> search for 1st occurence of '/' in your_col
    LOCATE('/', your_col, LOCATE('/', your_col) + 1) -> search for 2nd occurence of '/' in your_col
    LOCATE('/', your_col, LOCATE('/', your_col) + 1) + 1 -> from where to retriev the last part
*/

(我想年份> = 2000)

答案 2 :(得分:0)

如果您在MySQL中执行此操作时遇到问题,可以尝试使用strtotime转换日期()