php - 在不合逻辑的格式日期之间转换(更改/斜线/到 -dash- )

标签 php mysql database date

我正在从一个存在许多不一致的旧应用程序重建一个 Web 应用程序。我必须将所有数据从旧数据库迁移到我们的新结构。

在旧数据库中,日期以 VARCHAR 形式存储在 MySQL 数据库中。 我们位于英国,因此日期以 DD/MM/YYYY 格式书写。我需要将这些日期转换为 MySQL 的原生 DATE() 格式。

问题是这样的 - PHP 默认假定日期为“美国”格式 (MM/DD/YYYY),因为它们最初是用 / 而不是 - 分割的- 和 - 强制 PHP 假定它们是“欧洲”格式。

到目前为止,我这样做是为了转换它们:

$start_date = date('Y-m-d', strtotime($query->row('startdate')));

$query->row('startdate') 是旧数据库中存储日期的列。问题是,我需要先将所有 21/03/1994 切换为 21-03-1994

我该怎么做?

最佳答案

$start_date = date('Y-m-d', strtotime(str_replace('/', '-', $query->row('startdate'))));

或者更好 - 只需更改数据库中的数据:

UPDATE `table` SET `startdate` = REPLACE(`startdate`, '/', '-');

... 然后将字段转换为 DATE 类型。

---- 编辑----

实际上,Col. Shrapnel 说的有道理……我忽略了日期也需要倒转的事实,所以它是 YYYY-MM-DD;假设原始日期的格式为 DD/MM/YYYY,更好的查询可能类似于:

UPDATE `table` SET `date` = CONCAT(SUBSTRING(`date`, 7), '-', SUBSTRING(`date`, 4, 2), '-', SUBSTRING(`date`, 1, 2))

这会将组件部分反转为可以转换为 DATE 的字符串......如果原始日期字符串不使用前导零,它将无法正常工作 1/6/2011 例如……在这种情况下需要做一些更聪明的事情。

关于php - 在不合逻辑的格式日期之间转换(更改/斜线/到 -dash- ),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8136329/

相关文章:

php - cakephp 与 order by 的匹配不起作用

mysql - 我如何使用 mysql 创建 Rails 3.1 应用程序

php - 使用 PHP 和 codeigniter 显示带有 foreach 函数的固定表

sql-server - 数据库规范化的第一种形式?

php - Codeigniter搜索引擎错误

php - 从 PHP、mysql(页面中的多个查询)导出到 excel,代码无法正常运行?

php - 如何获取给定城市/国家的经度/纬度?

php - 使用 PHP 将 Vector 提交到 MySQL 以与 2 个表建立连接

mysql - 索引和外键有什么区别?

安卓机房 : How to model relationships?