(大家好。我特别喜欢SQL和MySQL。我知道一些PHP。)
我有一个包含“date_string”列的表。由于遗留原因,这是一个文本字段,包含d / m / YY格式的日期。例如2009年11月22日“2009年11月22日”。
问题:如何将此列中的所有字段转换为标准MySQL日期格式(YYYY-mm-dd),就地?
或者,由于列类型是文本,无法就地更改,我如何获取每个现有的基于文本的日期,并在另一列(类型为'date')中创建标准日期表
感谢您的帮助。
答案 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转换日期()