使用正则表达式在两个日期之间进行 SQL 查询

Posted

技术标签:

【中文标题】使用正则表达式在两个日期之间进行 SQL 查询【英文标题】:SQL query between two dates using regex 【发布时间】:2021-01-15 08:37:06 【问题描述】:

我正在做一个 sql 查询来提取从日期到日期的订单。 我认为我需要使用 LIKE 因为日期是字符串并且有天数,但我必须只考虑年份和月份,例如: 订购日期 -> 2019-01-01 正则表达式 -> LIKE '%2019-01-%' (所有订单在一月份完成) 然后我必须在另一个日期做同样的事情(比如说'%2019-03-%')。之后,我使用这两个日期来提取 BETWEEN 的时间。 问题是我不知道如何把这两件事放在一起。

【问题讨论】:

您使用的是哪个 dbms? 提示:使用正确的date数据类型,生活会变得更轻松。 向我们展示一些示例表数据和预期结果 - 全部为格式化文本(不是图像。),还向我们展示您当前的查询尝试。 minimal reproducible example 是的,不要使用字符串,应该是 Date、DateTime 或 DateTime2。如果您使用字符串,则会导致数据库出现问题,因为您将无法查找数据,因此每次都必须扫描整个表,这不好。从 SQL Server 的角度来看,但假设其他数据库也可以正常工作。因为在 Date 列上有一个索引将使 SQL 查询更好更快 【参考方案1】:

您可以使用substring,然后进行如下比较:

select * from orders
 where substring(date, 1, 7) between '2019-01' and '2019-03'

或者您可以将日期列转换为日期,然后将其与日期进行比较。

【讨论】:

以上是关于使用正则表达式在两个日期之间进行 SQL 查询的主要内容,如果未能解决你的问题,请参考以下文章

使用正则表达式提取不同格式的日期并对其进行排序 - 熊猫

关于grep后跟多个正则查询条件的问题

日期 ETL 的大查询正则表达式

SQL数据库查询使用正则表达式如何查询中文?

在pyspark数据框的列中使用正则表达式捕获两个字符串之间的第一次出现的字符串

SQL中的正则表达式子字符串在两个字符分隔符上