正确格式化的 MySQL 日期插入语句返回全 0

Posted

技术标签:

【中文标题】正确格式化的 MySQL 日期插入语句返回全 0【英文标题】:Properly formatted MySQL date insert statement returns all 0's 【发布时间】:2011-01-12 05:25:07 【问题描述】:

我创建了一个解析 html 页面、创建 mysql 查询并将解析数据插入 MySQL 表的 php 脚本。一切正常,除了一件事:日期字段。当 PHP 运行 MySQL 语句时,表中的日期为 0000-00-00 。如果我回显 MySQL 查询,它会产生以下结果:

INSERT INTO dispatch_table (dispatch_date, dispatch_time, dispatch1, dispatch2, dispatch3, dispatch4, dispatch5, dispatch6, dispatch7, dispatch8, dispatch9, dispatch10, dispatch11, dispatch12, dispatch13, dispatch14, dispatch15, dispatch16)VALUES ('2010-02-02', '10:46:17', '31.90' , '32.15','32.24','32.39','33.46','35.18','39.33','39.39','40.92','41.79','41.82','44.35','45.47','46.89','47.13','67.59');

如果我将语句复制并粘贴到 MySQL 表中,它会很好地插入日期,但是当 PHP 尝试插入它时,我会得到全 0。 dispatch_date 字段是 MySQL 中的“日期”字段。在使用 PHP 代码插入日期之前,要插入的日期被转换为字符串(我认为这可能会解决我的问题)。任何人都可以给我任何见解吗?

【问题讨论】:

我们看到的 PHP 代码越多,我们能给您的洞察力就越多。 【参考方案1】:

来自 tizag.com

当您输入的日期超出 a 的范围或格式错误 给定日期类型,MySQL 通常只会 输入所有的默认值 零。

您以错误的格式存储它们。

【讨论】:

这可能是因为您将日期转换为“字符串”,然后将其插入“日期”列。【参考方案2】:

2010-02-02 (%Y-%m-%d) 是默认格式,但可以更改。运行此查询以了解服务器中的值:

SELECT @@date_format, @@datetime_format;

如果它们不匹配,您将不得不更改查询或更改@@date_format 和@@datetime_format 变量。它们可以在每个会话的基础上进行更改:

SET @@session.date_format='%Y-%m-%d';
SET @@session.datetime_format='%Y-%m-%d %H:%i:%s';

【讨论】:

以上是关于正确格式化的 MySQL 日期插入语句返回全 0的主要内容,如果未能解决你的问题,请参考以下文章

求一SQL语句,把日期单数前面加0

MYSQL 中的日期格式不正确

Oracle插入语句日期格式设置

mysql语句如何传递日期参数 - 技术问答

mysql插入数据有(datetime类型怎么插入) 求一个完整的SQL语句

java怎么使用日期格式化将时间插入mysql datetime数据类型中?