查询:
SELECT * FROM `objects`
WHERE (date_field BETWEEN '2010-09-29 10:15:55' AND '2010-01-30 14:15:55')
返回什么。
我应该有足够多的数据让查询工作。我做错了什么?
查询:
SELECT * FROM `objects`
WHERE (date_field BETWEEN '2010-09-29 10:15:55' AND '2010-01-30 14:15:55')
返回什么。
我应该有足够多的数据让查询工作。我做错了什么?
当前回答
DATE()是一个MySQL函数,它只提取日期或日期/时间表达式的日期部分
SELECT * FROM table_name WHERE DATE(date_field) BETWEEN '2016-12-01' AND '2016-12-10';
其他回答
试着换个日期:
2010-09-29 > 2010-01-30?
第二次约会要在第一次约会之前。您是在2010年9月29日至2010年1月30日之间查询的)。试着颠倒一下日期的顺序:
SELECT *
FROM `objects`
WHERE (date_field BETWEEN '2010-01-30 14:15:55' AND '2010-09-29 10:15:55')
使用Date和Time值时,必须将字段转换为DateTime而不是Date。 试一试:
SELECT * FROM `objects`
WHERE (CAST(date_field AS DATETIME)
BETWEEN CAST('2010-09-29 10:15:55' AS DATETIME) AND CAST('2010-01-30 14:15:55' AS DATETIME))
可能是服务器端或客户端的日期配置有问题。 我发现当主机配置为西班牙语、法语或其他语言时,这是多个数据库上的一个常见问题…这可能会影响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')