我有一堆记录日期格式为字符串,如'04/17/2009'
我想将它们转换为mysql datetime字段
我计划使用foreach循环来读取旧的日期值,并将新格式化的值插入到每个记录的新字段中
什么是转换该字符串的最佳方式...我认为php可能有办法自动完成它?
谢谢
Pek*_*ica 91
首先,将字符串转换为时间戳:
$timestamp = strtotime($string);
Run Code Online (Sandbox Code Playgroud)
然后做一个
date("Y-m-d H:i:s", $timestamp);
Run Code Online (Sandbox Code Playgroud)
goa*_*oat 23
如果这些字符串当前在db中,则可以使用mysql的STR_TO_DATE()函数跳过php .
我假设字符串使用的格式类似于month/day/yearwhere month并且day始终是2位数,并且year是4位数.
UPDATE some_table
SET new_column = STR_TO_DATE(old_column, '%m/%d/%Y')
Run Code Online (Sandbox Code Playgroud)
您可以使用其他格式说明符来支持其他日期格式.
像这样使用DateTime :: createFromFormat:
$date = DateTime::createFromFormat('m/d/Y H:i:s', $input_string.' 00:00:00');
$mysql_date_string = $date->format('Y-m-d H:i:s');
Run Code Online (Sandbox Code Playgroud)
您可以将其调整为任何输入格式,而strtotime()将假设您使用/时使用美国日期格式,即使您不是.
添加的00:00:00是因为createFromFormat将使用当前日期来填充缺失的数据,即:如果您不精确,它将采用当前小时:min:sec而不是00:00:00.