日期格式 - 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 数据类型将 startdateenddate 存储在 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

以 dd-mm-yyyy 格式获取当前日期

Hive cast string到目前为止dd-MM-yyyy

将数据框日期列的 dd-mm-yyyy 日期格式更改为 yyyy-mm-dd [重复]

是否有任何方法在使用 INTL 包时将这种日期格式转换为 DD-MM-YYYY [重复]

在 UITextField swift 3.0 中使用数字键盘以 dd-MM-yyyy 格式输入日期