Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/258.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php MySQL数据库,包含3000多条需要转换的记录_Php_Mysql - Fatal编程技术网

Php MySQL数据库,包含3000多条需要转换的记录

Php MySQL数据库,包含3000多条需要转换的记录,php,mysql,Php,Mysql,我有一个数据库,它是一个Excel文件通过phpmyadmin的初始转储。因此,没有对表应用格式或其他逻辑。因此,我基本上只剩下一个varchar样式的行表。其中包括日期和时间 例如: 开始时间,结束时间,开始日期,结束日期。。看起来像是晚上7:30,11:00,9/9/12,11/22/12,然后是一些排很好的方式,他们就是这样。不幸的是,我无法将整个表转换为更好的格式,因为有人围绕这个糟糕的表设计了很多功能。唯一真正适合它的是,对于我可以关联的每一行,表都有一个自动递增的ID。所以我认为这是

我有一个数据库,它是一个Excel文件通过phpmyadmin的初始转储。因此,没有对表应用格式或其他逻辑。因此,我基本上只剩下一个varchar样式的行表。其中包括日期和时间

例如: 开始时间,结束时间,开始日期,结束日期。。看起来像是晚上7:30,11:00,9/9/12,11/22/12,然后是一些排很好的方式,他们就是这样。不幸的是,我无法将整个表转换为更好的格式,因为有人围绕这个糟糕的表设计了很多功能。唯一真正适合它的是,对于我可以关联的每一行,表都有一个自动递增的ID。所以我认为这是一种修补东西的方法,同时我们修复了很多这样的功能,这些功能将东西分离开来,我可以做一个各种各样的桥梁

创建一个表,该表可以为数据类型提供适当的行类型,然后能够使用一些mysql功能,例如在start_date上获得a-z列表,但列表有限

因此,我试图找出是否有一种方法可以将数据从一个表转储到下一个表,但在这个查询过程中,让它将数据转换为我想要的类型,例如datetime,将start_date和start_time组合成datetime格式,同样地,还可以将结束时间/日期转换成datetime格式


或者这是我将要在堆中取出的东西,用PHP循环,并让它在新表中插入新行

为此,您可以按照以下步骤操作:

在同一数据库中创建一个新表,该表包含源表中的所有字段以及要复制的表

创建一个PHP文件

编写MYSQL查询以选择源表中的所有值

在while循环中,编写一个查询以将这些行插入到新表中

在此之前,使用php中的strotime和date函数将start_time、end_time、start_date、end_date列的值转换为所需格式

在新表中插入新值


我将使用PHP脚本读取原始数据,然后将其处理为正确的日期格式,然后插入到新表中

因此,场景是,将时间和日期分开,并希望将它们合并,然后将它们格式化为DB可接受的日期格式。我会这样做:

date_default_timezone_set('America/Los_Angeles');

// you have separate dates and times like this
$date = '9/9/12';
$time = '11:00 PM';

// combine them into one string
$str = $date . ' ' . $time;

$dt = DateTime::createFromFormat('n/j/y g:i A', $str);

$DBFormat = $dt->format('Y-m-d H:i:s');

echo $DBFormat;
// outputs DB date format -> 2012-09-09 23:00:00

我注意到的一件事是你的第一个例子是晚上7:30,下一个例子是晚上11:00。在后一个示例中,PM前没有空间。我不知道这是否是您的输入错误,或者您的数据是否有这样的变化,如果有,我会添加一个复选框并插入空格。

是的,这就是我所想的,我希望我可以通过某种查询直接完成。但是我已经设置了新表,以及所有其他内容,所以我想写一个脚本来处理它不会有什么困难。我目前唯一的问题是,我不知道所列时间的时间戳的来源是什么,如东部、太平洋、中部、山区和其他地区。。我想我得弄清楚。Thanks@chris我会选择一个PHP脚本来处理数据,而不是一个大型查询/存储过程,因为我认为如果需要,调试和添加复杂逻辑会更容易。