2

好的,这可能会在某个地方被问到,但我无法通过谷歌或 SO 找到它,

我的查询是

INSERT INTO Tracking (OrderNum, PickupDate, ...) VALUES (95370,10/01/2013, .....)

板形式是更新 MS-Access db.. 的 php 脚本,目标列pickupDate是 access db.. 中的日期/时间数据类型。

当我运行这个查询时,插入 DB 的信息不是 10/01/2013,而是像 34444444299384 这样的长数字(类似的东西,没有准确指出)..

但是当我使用以下查询时

INSERT INTO Tracking (OrderNum, PickupDate, ...) VALUES (95370,'10/01/2013', .....)

因此,据我所知,引号之间的任何内容都是字符串

  • 那么,日期是字符串吗?
  • 为什么 2013 年 10 月 1 日的结果不同"10/01/2013"

有人可以向我解释一下吗?

谢谢你的指导。。

4

3 回答 3

4

当您使用:

10/01/2013

它是一个表达式:10 除以 1 除以 2013,结果0,0049677是: ... 然后转换为日期,因为日期实际上是数字。

当您使用:

'10/01/2013'

它是一个字符串,它被转换为日期。

在内部,日期存储为数字,而不是字符串。

于 2013-11-09T20:43:31.583 回答
4

我的猜测是这10/01/2013被解释为除法运算,所以结果数字是一个小的浮点数:

0.00496770988   

从那里,MySQL 可能假设您给了它一个 UNIX 时间戳,它会破坏数字以尝试将其转换为可存储的日期。

你想要做的是给 MySQL 它喜欢的格式YYYY-MM-DD并引用它:

'2013-10-01'

更多关于 MySQL 日期

于 2013-11-09T20:44:58.293 回答
0

如果您使用DATE作为列类型,则您的输入是错误的。MySQL 期望'2013-10-01',而不是'10/01/2013'。请参阅手册

于 2013-11-09T20:43:38.663 回答