Jac*_*ack 1 php mysql database date
我正在从一个有很多不一致的旧应用程序重建Web应用程序.我必须将旧数据库中的所有数据迁移到新结构中.
在旧数据库中,日期存储在MySQL DB中VARCHAR.我们的总部设在英国,因此日期以DD/MM/YYYY格式编写.我需要将这些日期转换为MySQL的原生DATE()格式.
问题是这个 - PHP默认假设日期是'美国'格式(MM/DD/YYYY),因为它们最初被拆分/而不是-- 并-迫使PHP假设它们是'欧洲'格式.
到目前为止我这样做是为了转换它们:
$start_date = date('Y-m-d', strtotime($query->row('startdate')));
Run Code Online (Sandbox Code Playgroud)
$query->row('startdate')旧数据库中存储日期的列在哪里.问题是,我需要先将所有的21/03/1994s 切换到21-03-1994.
我怎样才能做到这一点?
$start_date = date('Y-m-d', strtotime(str_replace('/', '-', $query->row('startdate'))));
Run Code Online (Sandbox Code Playgroud)
或者更好 - 只需更改数据库中的数据:
UPDATE `table` SET `startdate` = REPLACE(`startdate`, '/', '-');
Run Code Online (Sandbox Code Playgroud)
...然后将字段转换为DATE类型.
----编辑----
实际上,Shrapnel上校有一点......我忽略了日期需要逆转的事实,所以它是YYYY-MM-DD; 假设原始日期的格式为DD/MM/YYYY,则更好的查询可能类似于:
UPDATE `table` SET `date` = CONCAT(SUBSTRING(`date`, 7), '-', SUBSTRING(`date`, 4, 2), '-', SUBSTRING(`date`, 1, 2))
Run Code Online (Sandbox Code Playgroud)
这会将组件部分反转成一个可以转换为DATE的字符串......如果原始日期字符串不使用前导零1/6/2011,那么它将无法正常工作...需要做一些更聪明的事情那种情况.
| 归档时间: |
|
| 查看次数: |
8004 次 |
| 最近记录: |