我是新手。几天前我开始编写PHP代码。我想将php中的“datetime”数据类型复制到“date”和“time”数据类型的字段中。
我保留了datetime值的字段名datetime_info。它存在于try1表中。 date是“date”数据类型的字段名称,time是“time”数据类型的名称。这两个存在于try2表中。
这是我写的。
$result = mysql_query("SELECT * FROM try1");
while ($row = mysql_fetch_array($result))
{
$result_update = mysql_query("INSERT INTO try2 (date, time) VALUES ('".$row_team['datetime_info']."', '".$row_team['datetime_info']."')");
if (!$result_update)
die('Error: ' . mysql_errno() . mysql_error());
}
“try1”表中存储的值为:
id datetime_info
1 2008-10-02 00:00:00
2 2008-10-09 00:00:00
预期响应应该是存储在相应字段中的日期和时间。但是,输出是
id date time
2 0000-00-00 00:00:00
3 0000-00-00 00:00:00
任何人都可以解释我为什么以及如何解释?我尝试了很多网站,但没有找到任何正确的解释。谢谢你的期待。
此致 BasicGem
答案 0 :(得分:4)
首先,您不必使用PHP来完成这方面的艰苦工作。 MySQL非常强大,可以独立完成这些任务。
由于您要将表try1
中的所有行复制到try2
(但拆分日期时间列),因此以下内容应该有效:
INSERT INTO
`try2`
SELECT
null, DATE( `datetime_info` ), TIME( `datetime_info` )
FROM
`try1`
这样做:对于try1
中找到的每条记录,将以下值插入try2
:
null
表示使用auto_increment
中id
列的try2
功能(假设id
列确实是自动递增的主键字段)DATE( `datetime_info` )
表示使用datetime_info
try1
列的DATE部分
TIME( `datetime_info` )
表示使用datetime_info
try1
列的TIME部分
只需执行mysql_query( $sql )
,其中$sql
是一个代表上述查询的字符串就足够了。不需要先用PHP循环任何结果。
我也会写一个PHP解决方案,但其他人已经这样做了。我会建议this answer。
答案 1 :(得分:1)
$result = mysql_query("SELECT * FROM try1");
while ($row = mysql_fetch_array($result))
{
$split = explode(' ', $row_team['datetime_info']);
$result_update = mysql_query("INSERT INTO try2 (date, time) VALUES ('". $split[0]."', '".$split[1]."')");
if (!$result_update)
die('Error: ' . mysql_errno() . mysql_error());
}
答案 2 :(得分:1)
因为你把它变成一种格式并推动它适合另一种格式。
只需使用explode()
,您就可以获得所需的两部分。
list($date, $time) = explode(' ', $row_team['datetime_info']);
答案 3 :(得分:0)
类型date
的字段存储日期信息,即年,月和日(按此顺序)。
您可能已经猜到,time
字段以小时:分钟:秒的格式存储时间信息。
如果你看看你做了什么,分别在datetime
字段和date
字段中插入time
- MySQL无法识别格式(你正在通过数据格式与date
或time
字段的格式错误,因此会将其存储为默认日期值。
您需要将datetime_info
列的输出解析为日期部分和时间部分,然后将其提供给mysql。