将datestring转换为MySQLdate时间字段

我有一堆date格式为“04/17/2009”string的logging,

我想将它们转换为一个MySQLdate时间字段

我打算使用foreach循环来读取旧的date值,并将新格式化的值插入到每个logging中的新字段

什么是最好的方式来转换该string…我以为PHP可能有办法自动做到这一点?

谢谢

首先,将string转换为时间戳:

$timestamp = strtotime($string); 

然后做一个

 date("Ymd H:i:s", $timestamp); 

如果这些string当前在数据库中,可以使用mysql的STR_TO_DATE()函数跳过php。

我假定这些string使用像month/day/year这样的格式,其中monthday总是2位数, year是4位数。

 UPDATE some_table SET new_column = STR_TO_DATE(old_column, '%m/%d/%Y') 

您可以使用其他格式说明符来支持其他date格式。

使用DateTime :: createFromFormat像这样:

 $date = DateTime::createFromFormat('m/d/YH:i:s', $input_string.' 00:00:00'); $mysql_date_string = $date->format('Ymd H:i:s'); 

你可以适应这个任何input格式,而strtotime()会假定你使用美国date格式,如果你使用/,即使你不是。

添加的00:00:00是因为createFromFormat将使用当前date填充缺失的数据,即:如果不精确,它将采用当前小时:min:sec而不是00:00:00。

 $time = strtotime($oldtime); 

然后使用date()将其放入正确的格式。

 SELECT * FROM table_name WHERE CONCAT( SUBSTRING(json_date, 11, 4 ) , '-', SUBSTRING( json_date, 7, 2 ) , '-', SUBSTRING( json_date, 3, 2 ) ) >= NOW(); 

json_date [“05/11/2011”]

我假设我们正在讨论在Bash中这样做?

我喜欢使用sed将date值加载到一个数组中,这样我就可以分解每个字段并根据需要执行任何操作。 下面的例子假定inputmm / dd / yyyy的格式…

 DATE=$2 DATE_ARRAY=(`echo $DATE | sed -e 's/\// /g'`) MONTH=(`echo ${DATE_ARRAY[0]}`) DAY=(`echo ${DATE_ARRAY[1]}`) YEAR=(`echo ${DATE_ARRAY[2]}`) LOAD_DATE=$YEAR$MONTH$DAY 

你也可能想在linux上读取date命令。 这可能非常有用: http :

希望有所帮助… 🙂

-Ryan