Php 将日期字符串转换为mysql日期时间字段
我有一堆日期格式化为字符串的记录,如“04/17/2009” 我想将它们转换为mysql日期时间字段 我计划使用foreach循环读取旧的日期值,并将新格式化的值插入每个记录中的新字段 转换字符串的最佳方法是什么…我想php可能有一种自动转换的方法 谢谢Php 将日期字符串转换为mysql日期时间字段,php,mysql,Php,Mysql,我有一堆日期格式化为字符串的记录,如“04/17/2009” 我想将它们转换为mysql日期时间字段 我计划使用foreach循环读取旧的日期值,并将新格式化的值插入每个记录中的新字段 转换字符串的最佳方法是什么…我想php可能有一种自动转换的方法 谢谢 然后使用date()将其转换为正确的格式。首先,将字符串转换为时间戳: $timestamp = strtotime($string); 然后做一个测试 date("Y-m-d H:i:s", $timestamp); 如果这些字符串当前在
然后使用
date()
将其转换为正确的格式。首先,将字符串转换为时间戳:
$timestamp = strtotime($string);
然后做一个测试
date("Y-m-d H:i:s", $timestamp);
如果这些字符串当前在数据库中,可以使用mysql函数跳过php 我假设字符串使用的格式类似于
month/day/year
,其中month
和day
始终为2位,而year
为4位
UPDATE some_table
SET new_column = STR_TO_DATE(old_column, '%m/%d/%Y')
您可以通过使用来支持其他日期格式。我想我们讨论的是在Bash中执行此操作 我喜欢使用sed将日期值加载到数组中,这样我就可以分解每个字段,并对其执行任何操作。以下示例假定输入格式为mm/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命令。它可能非常有用:
希望这有助于……:)
-Ryan使用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');
您可以将其调整为任何输入格式,而strotime()将假定您使用的是US date格式(如果您使用/),即使您没有使用
添加的00:00:00是因为createFromFormat将使用当前日期来填充缺少的数据,即:如果不精确,将使用当前的小时:分钟:秒而不是00:00:00
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”]是PHP/MySQL。偶尔检查一下标签;)或者立即执行:date(“Y-m-dh:i:s”,strotime($string));这将是一个很好的方法,可惜我的数据库技能不能胜任+1任务。不得不转换fakenamegenerator.com导出的3000个假名字,其中一个字段名为“生日”。将每个字段以MM/DD/YYYY格式存储为VARCHAR字段。这个答案帮助很大。对于1970年之前的日期,一定是答案
SELECT *
FROM table_name
WHERE CONCAT( SUBSTRING(json_date, 11, 4 ) , '-', SUBSTRING( json_date, 7, 2 ) , '-', SUBSTRING( json_date, 3, 2 ) ) >= NOW();