当type为timestamp时,查找两个日期之间的记录不起作用

时间:2015-06-11 09:56:35

标签: php mysql sql date datetime

我有一张有dates的桌子,我希望在两个日期之间找到日期。

对于created_date表字段,我使用了timestamp类型。现在我创建了以下sql查询来查找2015-04-15 to 2015-04-21之类的日期之间的记录。

我的表

id  created_date
**  *******************
10  2015-04-15 10:49:26
13  2015-04-17 09:49:06
14  2015-04-21 14:59:42
15  2015-05-20 14:26:07
16  2015-06-11 13:25:34

我的选择查询

SELECT *
FROM table
WHERE created_date
BETWEEN '2015-04-15'
AND '2015-04-21'
ORDER BY created_date DESC
LIMIT 0 , 10

当我使用上表中的timestamp类型时,sql无法工作因为我正在与此数据格式YYYY-MM-DD进行比较。我希望使用timestamp类型来获取记录,并且不希望从表中更改但是在不读取HH:MM:SS的情况下获取结果。

例如,如果我使用这两个日期进行搜索:2015-04-15 to 2015-04-21

我想要这些记录:

id  created_date
**  *******************
10  2015-04-15 10:49:26
13  2015-04-17 09:49:06
14  2015-04-21 14:59:42

任何想法如何获得这样的记录:)

感谢。

4 个答案:

答案 0 :(得分:0)

您必须使用

之类的查询
SELECT *
FROM table
WHERE created_date
BETWEEN '2015-04-15 00:00:00'//add 00:00:00
AND '2015-04-21 23:59:59'// add  23:59:59
ORDER BY created_date DESC
LIMIT 0 , 10

答案 1 :(得分:0)

您可以使用MySQl Configuration file [] is not valid, could not configure the toolmanager.

DATE()

答案 2 :(得分:0)

你看过UNIX_TIMESTAMP()吗?例如:

SELECT * 
FROM table
WHERE created_date
BETWEEN UNIX_TIMESTAMP('2015-04-15 00:00:00')
AND UNIX_TIMESTAMP('2015-04-21 23:59:59')
ORDER BY created_date DESC
LIMIT 0, 10

OR

SELECT * 
FROM table
WHERE created_date
>= UNIX_TIMESTAMP('2015-04-15 00:00:00')
AND created_date <= UNIX_TIMESTAMP('2015-04-21 23:59:59')
ORDER BY created_date DESC
LIMIT 0, 10

上面只是一个例子。

使用DATETIME类型进行更多优化是理想的选择,查询更加容易。我真的很想看到这个。

答案 3 :(得分:0)

试试这个

SELECT *
FROM table
WHERE created_date
BETWEEN '2015-04-15 00:00:00'
AND '2015-04-21 23:59:59'
ORDER BY created_date DESC
LIMIT 0 , 10