日期格式 - DD-MM-YYYY 到 YYYY-MM-DD
Posted
技术标签:
【中文标题】日期格式 - DD-MM-YYYY 到 YYYY-MM-DD【英文标题】:Date formatting - DD-MM-YYYY to YYYY-MM-DD 【发布时间】:2016-01-02 03:24:53 【问题描述】:mysql 表有 2 列 - startdate 和 enddate
他们以这种格式保存日期:22-01-2016
当我做原型时,我使用了 MediumText。
现在,我想切换到日期格式。 phpMyAdmin 中的默认日期格式是 YYYY-MM-DD
如果我将列切换为日期,我的数据将变为 0000-00-00。
使用 PHP 或 MySQL,如何在返回 PHPMyAdmin 之前重新格式化我的数据以将列切换为日期格式?
【问题讨论】:
您是否使用 VARCHAR 或 DATE 数据类型将startdate
和 enddate
存储在 DB 中?
不要使用文本格式以任意格式存储日期.....首先将日期存储在日期数据类型中;但是 MySQL 不能简单地让您将该列更改为日期,因为作为 varchar 的列的内容不是可识别的日期格式
原型制作时 - 需要一些快速而肮脏的东西。现在,我需要优化应用程序。
也许首先将现有 mediumtext 中的所有数据更新为 YYYY-MM-DD 格式,然后作为第二步更改数据类型
最好插入到另一个正确键入的字段中,然后删除 varchar 字段。
【参考方案1】:
您可以使用字符串到日期函数在更改其结构之前更新列数据
UPDATE table SET dateColumn = STR_TO_DATE(dateColumn, '%d-%m-%Y');
它将 DD-MM-YYYY 格式的日期转换为 YYYY-MM-DD。之后,您可以将列的结构更改为DATE
【讨论】:
【参考方案2】:最简单和最可靠的方法是拆分日期并以相反的方式重新排列它们:
$parts = explode('-', $olddate);
$newdate = sprintf('%04d-%02d-%02d', $parts[2], $parts[1], $parts[0]);
【讨论】:
以上是关于日期格式 - DD-MM-YYYY 到 YYYY-MM-DD的主要内容,如果未能解决你的问题,请参考以下文章
SQL Server 没有获取日期格式 dd-mm-yyyy
Hive cast string到目前为止dd-MM-yyyy
将数据框日期列的 dd-mm-yyyy 日期格式更改为 yyyy-mm-dd [重复]