这里,我使用mysql查询,因为它显示空结果或空结果,尽管数据库中有记录。 那么,实际问题在哪里呢?
SELECT `fx_tasks`.*, `fx_assign_tasks`.`assigned_user`
FROM (`fx_tasks`)
LEFT JOIN `fx_assign_tasks`
ON `fx_assign_tasks`.`task_assigned` = `fx_tasks`.`t_id`
WHERE `fx_tasks`.`project` = 55
AND str_to_date(`fx_tasks`.`start_date`, "%d-%m-%Y")
BETWEEN "08-09-2015" AND "28-09-2015"
ORDER BY `fx_tasks`.`t_id` DESC
答案 0 :(得分:2)
问题可能出在str_to_date(
部分(尽管不是双引号)。 fx_tasks
.start_date
, "%d-%m-%Y") BETWEEN "08-09-2015" AND "28-09-2015" fx_tasks
转换为日期,在mysql中为YYYY-MM-DD格式,然后将其与包含不同格式的日期的字符串进行比较。没有记录符合这一标准。
将上述标准中的日期更改为YYYY-MM-DD格式:
start_date
答案 1 :(得分:1)
MySQL中的日期需要采用Y-m-d
格式。
str_to_date(`fx_tasks`.`start_date`, "%d-%m-%Y")
BETWEEN "2015-09-08" AND "2019-09-28"
来自文档(http://dev.mysql.com/doc/refman/5.5/en/datetime.html):
DATE类型用于具有日期部分但没有时间部分的值。 MySQL在' YYYY-MM-DD'中检索并显示DATE值。格式。
当您使用str_to_date
时,它使用格式字符串解析来自db的值,然后以DATE
格式返回Y-m-d
值
P.S。如果fx_tasks.start_date
已经已经 DATE
类型,那么您就不需要str_to_date
。
P.P.S。如果您想以其他格式打印DATE
,请使用date_format()
。