【问题标题】:Error in SQL when insert date in datetime column在日期时间列中插入日期时 SQL 出错
【发布时间】:2015-03-17 14:11:46
【问题描述】:

当我尝试在我的数据库中插入日期时,MySql 出现问题。

我的表有一个日期时间列,当我用 PHP 插入一些值时,比如

INSERT INTO table (column1,column2) VALUES ('1','2010-11-20');

[Column2 是 DATETIME]

我的结果,在我的数据库中是 '1' 和 '0000-00-00 00:00:00' 我不知道为什么,因为这有效.... :S.

可能是什么问题?

对不起...我再解释一下我的问题

我从格式为“20-11-2010”的文件中读取这些值,然后更改为 MySql 格式(这很容易)并编写插入语句。

我的插入语句很好,我把它放在其他文件(如 .log)中,结果是:

INSERT INTO telephones (telephone,date) VALUES ('123456789','2014-18-11');

但是如果我查看我的数据库,结果是:

'123456789' and '0000-00-00 00:00:00'

编辑:

但在某些情况下,我有 '2010-11-20 16:30:20' 这样的值。如果我将 DATETIME 更改为 DATE,我将丢失此值。

我的数据值来自一个文件,值是这样的

'123456789''20-11-2010 16:00:00' [First value is a telephon number and the next is the date]

但在某些情况下,我会收到没有时间的日期。

当我重新定义日期时,我使用explode() 更改了值,然后按下一个顺序返回值

$myDate = $date[2]."-".$date[1]."-".$date[0];

当我构建我的插入时,我尝试使用 @entiendoNull 解决方案,例如

date("Y-m-d H:i:s", strtotime($myDate));

但这放入了我的插入句“1970-01-01 XX:xx:xx”

【问题讨论】:

  • 您遇到错误了吗?将其输入数据库的 PHP 在哪里?我们需要更多的努力。
  • 难道你也需要指定时间..?如果您只想将日期设置为“日期”而不是“日期时间”。
  • 确保你的 php $value 真的是 '2010-11-20'
  • 是的,这是一个正确的类型,因为有时我有起息日期和时间,因此,我的数据库中需要 datetime。我在 PHP 中的值是正确的。
  • 尝试插入:$formattedDate = date("Y-m-d H:i:s", strtotime($value)); $value 包含一个日期,例如 2015-01-19

标签: php mysql datetime


【解决方案1】:

您尝试将 DATE 格式的信息插入到接受 DATETIME 的列中。

最后,您要么必须将表中的列更改为“DATE”,要么(更好)只插入 00:00:00 作为时间:

INSERT INTO table (column1,column2) VALUES ('1','2010-11-20 00:00:00');

【讨论】:

  • 但在某些情况下,我的值​​类似于“2010-11-20 16:30:20”。如果我将 DATETIME 更改为 DATE,我将丢失此值
  • 您唯一的选择是暂时插入零。如果您之后只想比较日期,则应使用 sql between 运算符:SELECT * FROM table WHERE column2 BETWEEN '2010-11-20 00:00:00' AND '2010-11-20 23:59:59'
【解决方案2】:

按以下方式格式化您的日期,然后尝试插入它:

$formattedDate = date("Y-m-d H:i:s", strtotime($value)); //$value holds a date e.g. 2015-01-19 or a datetime e.g. 2015-01-19 10:58:01

【讨论】:

    猜你喜欢
    • 2016-04-01
    • 1970-01-01
    • 2021-10-22
    • 2022-11-17
    • 2013-05-19
    • 2016-10-04
    • 2021-03-22
    • 2016-01-21
    • 1970-01-01
    相关资源
    最近更新 更多