使用正则表达式在两个日期之间进行 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 查询的主要内容,如果未能解决你的问题,请参考以下文章