将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
这样的格式,其中month
和day
总是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