SQL日期过滤
根据日期值筛选数据是处理数据库时常见的情况。例如,它允许我们从特定的时间框架中获取数据,基于给定的日期聚合结果,识别随时间变化的趋势模式,以及其他与时间相关的操作。
因此,这对任何数据库开发人员来说都是一项重要的技能。SQL为我们提供了各种工具来过滤给定数据集中的日期。
加入这篇文章,我们将探索各种方法和技术,我们可以使用这些方法和技术来过滤SQL世界中的日期。
先决条件:
在我们深入研究实际示例和应用程序之前,让我们分析一下您需要什么。
在这篇文章中,我们将尝试坚持适用于几乎所有SQL数据库的方法。但是,出于演示目的,我们使用MySQL version 8和Sakila示例数据库。
但是,您可以自由下载和使用您想要的任何数据集。我们将指出所提供的方法是否可以在其他数据库中工作,并提供替代方法(如果有的话)。
筛选特定日期
最基本的日期过滤操作是我们需要检索特定日期的一条或多条记录。
在这种情况下,我们可以使用WHERE子句,后面跟着日期列和我们希望检索的实际日期值。
例如,假设我们想要查找2005年5月24日的租赁记录。我们可以运行如下查询:
SELECT *
从租赁
WHERE rental_date = '2005-05-24 23:03:39';
在本例中,我们提供希望过滤的日期作为时间戳值。这是因为“rental_date”列将值存储为时间戳。
筛选日期范围
第二个常见操作是基于特定日期范围过滤数据。例如,假设我们希望检索2005年5月到2005年6月之间的租金。
我们可以这样运行查询:
选择
*
从
租赁
在哪里
rental_date BETWEEN '2005-04-01 00:00:00' AND '2005-06-01 00:00:00';
在本例中,我们使用AND操作符连接两个值。WHERE子句用于“rental_date”列中的任何值必须位于两个范围之间的情况。
使用示例输出如下:
筛选日期组件
在其他情况下,我们可以从值中提取特定的日期组件,并以此为基础进行筛选,而不是使用文字值来使用日期范围。
例如,不指定从2005-04-01和2005-06-01开始,我们可以提取5月份并过滤该月份内的任何数据。
在MySQL中,我们可以使用像MONTH()这样的函数来实现这个目标,如下面的例子所示:
选择
*
从
租赁
在哪里
MONTH(rental_date) = 5;
在本例中,MONTH(rental_date)从日期中提取月份部分。然后,我们可以使用这个值来过滤值等于5的地方。
结论
在本教程中,我们学习了SQL中最基本和最常见的任务之一,即根据日期值过滤数据。我们学习了如何从日期中提取各种组件,并使用它来过滤日期等。