什么是约会?一个字符串?还是双倍?

时间:2013-11-09 20:40:27

标签: mysql sql string date

好的,可能会在某个地方询问,但我无法通过Google或SO找到它,

我的查询是

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

板块表格是一个更新MS-Access db ...的PHP脚本,目标列pickupDate是访问数据库中的日期/时间数据类型..

当我运行此查询时,插入数据库中的信息不是 10/01/2013,而是长数字,如34444444299384(类似的东西,并没有完全注意到这一点).. < / p>

但是当我使用以下查询时

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

因此,据我所知, qoutes之间的任何内容都是STRING

  • 所以,Date是一个字符串??
  • 为什么10/01/2013和"10/01/2013"的结果有所不同?

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

感谢你的指导..

3 个答案:

答案 0 :(得分:4)

使用时:

10/01/2013

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

使用时:

'10/01/2013'

这是一个字符串,可以转换为日期。

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

答案 1 :(得分:4)

我的猜测是10/01/2013被解释为除法运算,因此得到的数字是一个小的浮点数:

0.00496770988   

从那里开始,MySQL可能会假设你为它提供了一个UNIX时间戳,并且它试图将其转换为可存储的日期,从而破坏了该数字。

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

'2013-10-01'

More on MySQL Dates

答案 2 :(得分:0)

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