查询:

SELECT * FROM `objects` 
WHERE (date_field BETWEEN '2010-09-29 10:15:55' AND '2010-01-30 14:15:55')

返回什么。

我应该有足够多的数据让查询工作。我做错了什么?


当前回答

仅仅将date_field转换为date

SELECT * FROM `objects` 
WHERE (cast(date_field as date) BETWEEN '2010-09-29' AND 
'2010-01-30' )

其他回答

您的查询应该有日期为

select * from table between `lowerdate` and `upperdate`

try

SELECT * FROM `objects` 
WHERE  (date_field BETWEEN '2010-01-30 14:15:55' AND '2010-09-29 10:15:55')

可能是服务器端或客户端的日期配置有问题。 我发现当主机配置为西班牙语、法语或其他语言时,这是多个数据库上的一个常见问题…这可能会影响dd/mm/yyyy或mm/dd/yyyy格式。

date_field是datetime类型吗?此外,你还需要把较早的日期放在前面。

它应该是:

SELECT * FROM `objects` 
WHERE  (date_field BETWEEN '2010-01-30 14:15:55' AND '2010-09-29 10:15:55')

试着换个日期:

2010-09-29 > 2010-01-30?

显示两个特定日期之间的帖子(例如):

一个场合开始于(04-12),结束于(04-14),而不选择查询中的年份,使其每年在指定的日期上循环,所以我的目标是在开始日期上显示该场合,并在结束日期上自动隐藏它,如下所示:

$stmt = $db->query(
    "SELECT * FROM table

    WHERE (CAST(CURDATE() AS date)

    BETWEEN

    CAST(table.date_start AS date)
    AND
    CAST(table.date_end AS date))

    LIMIT 1"
);

现在,事件只在这些指定的日期之间开始和消失,而不是在这之后或之前。