将日期字符串转换为mysql datetime字段

mjr*_*mjr 52 php mysql

我有一堆记录日期格式为字符串,如'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)

  • 或者一次做到:date("Ymd H:i:s",strtotime($ string)); (44认同)

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)

您可以使用其他格式说明符来支持其他日期格式.


Ket*_*ryn 8

像这样使用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.