【发布时间】:2016-12-23 12:17:31
【问题描述】:
当我还在学习 PHP 和 MySQL 时,我创建了一个非常古老的数据库。 如果我填充:
SELECT * FROM Jobs WHERE (date BETWEEN 'Aug.01 2016' AND 'Aug.31 2016')
我实际上可以填充行
Found rows: 4 Warnings: 0 Duration for 1 query: 0.000 sec.
但是一旦我改变了我的月份(将范围从 8 月 1 日移动到 7 月 1 日):
SELECT * FROM Jobs WHERE (date BETWEEN 'Jul.01 2016' AND 'Aug.31 2016')
我什么也没得到,所以 7 月 1 日至 8 月 31 日的范围包括 8 月 1 日至 8 月 31 日(来自上一个示例),它应该至少填充 4 行
Found rows: 0 Warnings: 0 Duration for 1 query: 0.016 sec.
有没有一种方法可以填充这些行,即使它们有不同的月份?
【问题讨论】:
-
date是什么数据类型?是DATETIME还是只是一个字符串? -
@Machavity 它是
VARCHAR所以格式实际上是一个类似于Jul.01 2016的字符串 -
你需要考虑切换到
DATETIME。在这样的日期进行索引查找会很昂贵 -
在数据库中正确存储日期date types,这将使生活变得轻松一百万倍
-
所以,看来我需要用
DATETIME创建一个新表并重新生成正确的值...谢谢!
标签: php mysql sql-server date