正确格式化的 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的主要内容,如果未能解决你的问题,请参考以下文章