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

MySQL-是否将日期字符串更改为日期类型?,sql,mysql,date,Sql,Mysql,Date,(大家好。我对SQL和MySQL特别陌生。我懂一些PHP。) 我有一个包含“日期字符串”列的表。出于传统原因,这是一个文本字段,包含d/m/YY格式的日期。e、 g.2009年11月22日的“22/11/09” 问题:如何将此列中的所有字段转换为标准MySQL日期格式(YYYY-mm-dd) 或者,如果无法对其进行适当的更改,鉴于列类型是文本,我如何获取每个现有的基于文本的日期,并在表中的另一列(类型为“date”)中创建标准日期 谢谢您的帮助。您可能想使用该功能 SELECT STR_TO_D

(大家好。我对SQL和MySQL特别陌生。我懂一些PHP。)

我有一个包含“日期字符串”列的表。出于传统原因,这是一个文本字段,包含d/m/YY格式的日期。e、 g.2009年11月22日的“22/11/09”

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

或者,如果无法对其进行适当的更改,鉴于列类型是文本,我如何获取每个现有的基于文本的日期,并在表中的另一列(类型为“date”)中创建标准日期


谢谢您的帮助。

您可能想使用该功能

SELECT STR_TO_DATE(textdate, '%d/%m/%y') FROM MyTable...
或者使用
日期
数据类型创建另一列,并复制值:

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

(我假设年份>=2000)

如果您在MySQL中执行此操作时遇到困难,您可以使用strotime()转换日期来尝试使用php

谢谢您的帮助!当我尝试任一选项时,所有字段的结果都是“NULL”。具体来说,如果我这样做:从myTable中选择STR_TO_DATE(“%d/%m/%y”,DATE_string),那么我会得到一个空值列表,每个记录一个。“date_string”是varchar类型,最多32个字符。日期当前存储为“19/3/05”、“1/8/07”等。抱歉,我颠倒了参数。我会编辑以上的例子,使之正确。谢谢。是的,本例中的年份始终大于等于2000。但是,字符串本身的长度是可变的,因为“1/1/01”与“31/12/09”等日期一起记录。这两个日期都能通过你的算法吗?Cheers.1版本不适用于'1/1/01'。修正。现在这两个都能用了。是的,这将是我的下一步。但是,Bill编辑的示例现在可以工作了,所以保存了一个PHP作业。干杯
    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
*/