【问题标题】:How to Insert a datetime in the future in PHP/mysql?如何在 PHP/mysql 中插入将来的日期时间?
【发布时间】:2011-06-25 14:00:22
【问题描述】:

我有一个带有日期时间列的数据库表。如果使用当前日期进行插入,一切正常:

INSERT INTO table VALUES ('field1', now(), 'field2');

但是当我尝试在未来插入一个日期时它返回 NULL。我这样做:

INSERT INTO table VALUES ('field1', '2011-07-01 00:00:00', 'field2');

这个查询有什么问题??

注意。当我插入当前日期时它工作正常,然后使用 DATE_ADD() 进行更新但这很复杂,没有什么比这更容易的了??

谢谢!

【问题讨论】:

  • 很奇怪,我觉得还可以。您是否在 phpMyAdmin 之类的工具中手动运行该精确查询并将其设置为 NULL?你 10000% 确定吗?
  • 你是对的 Pekka,它有效。我发现了为什么要做一个简单的查询(INSERT INTO table (date_field) values('2011-07-01 00:00:00'))。这样做我注意到在日期之前缺少一列(该表有超过 30 列)......我的错,对不起:/ 好的,所以最后一个基本的 INSERT 像 '2010-01-00 00:00:00 ' 在日期时间上工作正常。我开始觉得有什么特别的事情要做。

标签: php mysql date insert


【解决方案1】:

Take a look at this

您真正遇到的唯一问题是您要插入到日期字段的字符串未解析为字符串。 now() 之类的函数和其他日期时间返回日期类型,并且正如您所写的那样,这没有问题。 提示:“如果从 str 中提取的日期、时间或日期时间值非法,则 STR_TO_DATE() 返回 NULL 并产生警告”

【讨论】:

  • 感谢您的链接,但当我这样做时它仍然返回 NULLINSERT INTO table VALUES ( 'field1', STR_TO_DATE('2011-07-01','%Y-%m-%d'), 'field2' ) 有什么想法吗?
  • 当我启动下面的查询时,它说我的字段不能为空...INSERT INTO table (date_field) values(STR_TO_DATE('2011-07-01 00:00:00','%Y-%m-%d %h:%i:%s')) 看起来我的“日期”与模式不匹配,但确实如此。
  • 这不是必需的。 YYYY-MM-DD HH:MM:SS 是日期字段的有效语法,不需要转换
【解决方案2】:

使用这个

INSERT INTO table VALUES ('field1', CURRENT_TIMESTAMP, 'field2');

【讨论】:

    【解决方案3】:

    对不起,我的错:/

    我之前在我的 sql 查询中忘记了一个列,这就是它返回 NULL 的原因...

    最后,像 '2014-01-00 00:00:00' 这样的基本 INSERT 在日期时间上可以正常工作(即使您没有放置 hh:mm:ss)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-04-01
      • 1970-01-01
      • 2016-08-20
      • 1970-01-01
      • 2011-02-25
      • 2017-12-31
      相关资源
      最近更新 更多