php - 在 php/mysql 中将日期时间数据类型转换为日期和时间数据类型

标签 php mysql datetime date time

我是新手。几天前我开始编写 php 代码。我想将 php 中的“日期时间”数据类型复制到“日期”和“时间”数据类型的字段。

我为日期时间值保留了字段名称 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

谁能解释一下原因和方法?我尝试了很多网站,但没有找到任何合适的解释。谢谢你的期待。

问候, 基础 gem

最佳答案

首先,您不必使用 PHP 来完成这里的繁重工作。 MySQL 非常强大,可以自行完成这些类型的任务。

由于您正在将表 try1 中的所有行复制到 try2(但拆分 datetime 列),因此以下应该有效:

INSERT INTO
  `try2`
  SELECT
    null, DATE( `datetime_info` ), TIME( `datetime_info` )
  FROM
    `try1`

它的作用是:对于在 try1 中找到的每条记录,将以下值插入到 try2 中:

  • null 表示使用 try2id 列的 auto_increment 功能(这是假定 id 列确实是一个自增主键字段)
  • DATE( `datetime_info` ) 表示使用 try1
  • datetime_info 列的 DATE 部分
  • TIME( `datetime_info` ) 表示使用 try1
  • datetime_info 列的 TIME 部分

只需执行 mysql_query( $sql ) ,其中 $sql 是表示上述查询的字符串就足够了。无需先使用 PHP 循环遍历任何结果。

我也打算编写一个 PHP 解决方案,但其他人已经这样做了。我会建议 this answer .

关于php - 在 php/mysql 中将日期时间数据类型转换为日期和时间数据类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7647606/

相关文章:

mysql - ssh 连接吐出 sql 客户端连接日志记录,我该如何阻止它?

php - 如何在单个 php 页面中将值插入到不同的表中?

sql - 模糊数据存储和查找

php - sql - 查找哪个文件夹未使用

php - Laravel 排除投票的帖子

php - 如何在 while 循环中只允许每个名称中的一个?

java - 使用 java.time API 获取一个月中的天数的最佳方法是什么?

python - 使用 pandas to_datetime 时如何定义格式?

php - 测量php脚本的实际执行时间

php - 是否可以检测何时包含 php 文件?