MySQL查询-在两个日期之间进行检查,无需检索行

MySQL查询-在两个日期之间进行检查,无需检索行,mysql,select,Mysql,Select,我有一个包含日期的表,我试图检查我的日期是否在表中的日期之间。我的查询正在运行,但没有返回任何内容。这似乎应该很简单,但我不能把我的头围绕着它 SQL查询如下所示: SELECT id FROM table WHERE (this_date) between (beginning_date_from_table) and (end_date_from_table) 这些日期是在脚本中动态生成的,因此我可以确定传入脚本的内容是否在表中的开始日期和结束日期之间。我不需要表中的任何特定数据,只需要一

我有一个包含日期的表,我试图检查我的日期是否在表中的日期之间。我的查询正在运行,但没有返回任何内容。这似乎应该很简单,但我不能把我的头围绕着它

SQL查询如下所示:

SELECT id FROM table
WHERE
(this_date) between (beginning_date_from_table) and (end_date_from_table)
这些日期是在脚本中动态生成的,因此我可以确定传入脚本的内容是否在表中的开始日期和结束日期之间。我不需要表中的任何特定数据,只需要一个布尔值来告诉我日期是否在开始日期和结束日期之间。

您正在查找:


希望这有帮助,

检查MySQL服务器的日期格式和生成的日期格式

MySQL的日期格式是这样的:“2019-01-30 18:19:52”

你也可以尝试改变

(beginning_date_from_table) and (end_date_from_table)


检查:

我的问题措辞有点错误,因为我试图返回条件的结果。一旦我意识到如何向谷歌提出正确的问题,我很快想出了这个解决方案:

SELECT (CASE WHEN this_date BETWEEN beginning_date AND end_date THEN 1 ELSE 0 END) AS date_result

多亏了其他人的回答,您的输入让我的想法走上了正确的轨道。

您应该为表达式指定一个别名,以便于检索值。谢谢您Miroslav。不幸的是,EXISTS返回的值为0,因为我并没有要求MySQL返回任何行,而是只检查表中是否有两个其他日期之间的日期。在PHP中,我可以通过从表中检索开始日期和结束日期并检查此日期是否介于两者之间来获得相同的结果,我希望有一种更优雅的方法在纯SQL中实现这一点。我知道我的语法是错误的,因为我要求的是一些不存在的东西,但我不知道如何基于条件返回某种布尔值。您好,这里,
EXISTS()
的结果是布尔值,
0
如果为false,
1
如果为true,不管存在多少行。这不是你想要的吗?谢谢你抽出时间再次回复。我想我是在要求MySQL做一些它不是专门为之设计的事情。替换我原来帖子中的变量,我想知道“2007-02-04是否在2007-01-24和2007-02-16之间”。第一个日期作为变量传入,第二个和第三个日期从表中检索。不幸的是,存在并不能解决问题。根据文档,“如果子查询返回任何行,则EXISTS子查询为TRUE,NOT EXISTS子查询为FALSE。”该查询从不返回任何行,因此EXISTS始终为FALSE。谢谢你的努力。我有一个不雅观的解决方案,我将使用:)出于好奇,你的解决方案是什么?我觉得我误解了这个问题..您的查询应该没问题,只是检查一下是否返回了任何行。如果有,日期在范围内,如果没有,则不在范围内。谢谢你们的回复。在发布之前,我在这里和其他地方阅读了上述问题和其他许多问题。它没有解决我的确切问题,即希望返回对检索到的数据的测试结果,而不是检索任何数据。在米罗斯拉夫的帖子下面的评论中有一个较长的解释。最后,我找到了如何正确表达这个问题的答案,这里:谢谢你的帮助!谢谢你的回复。不幸的是,问题不在于日期,而是我没有要求MySQL返回任何行,而只是检查表中其他两个日期之间是否存在日期。在PHP中,我可以通过从表中检索开始日期和结束日期并检查此日期是否介于两者之间来获得相同的结果,我希望有一种更优雅的方法在纯SQL中实现这一点。
(end_date_from_table) and (beginning_date_from_table)
SELECT (CASE WHEN this_date BETWEEN beginning_date AND end_date THEN 1 ELSE 0 END) AS date_result