sql - 如何在 SQL 中排除每年的特定日期范围

标签 sql apache-spark-sql

我试图在数据库中排除每年两个日期之间的圣诞节期间。这是我正在尝试运行的查询。根据我的理解,这应该包括每年的每一行,但月份 <= 12 和日期 <= 15 以及月份 <= 12 和日期 >= 26 的行除外。

但是,结果似乎根本没有返回任何行!

  SELECT
      *
  FROM
      transactons
  WHERE
   event_date BETWEEN TO_DATE("2016-12-01")
                  AND TO_DATE("2021-12-31")
   
   AND ((EXTRACT(MONTH FROM event_date) <= 12 AND EXTRACT(DAY FROM event_date) <= 15)
   AND (EXTRACT(MONTH FROM event_date) <= 12 AND EXTRACT(DAY FROM event_date) >= 26))

有人对如何在这里过滤掉每年的 Dec-15Dec-26 有什么建议吗?

最佳答案

您应该指定您的 DBMS,因为以下代码可能会更改。请提供它,我很乐意更新我的答案。

如果我理解你的逻辑,快速一些:

  SELECT
      *
  FROM
      transactons
  WHERE
   (
    MONTH(event_date) = 12
    AND
    DAY(event_date) BETWEEN 12 AND 26
    )
   

如果在 WHERE 之后放置 NOT,则可以反转查询

关于sql - 如何在 SQL 中排除每年的特定日期范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70246618/

相关文章:

apache-spark - Spark 流 : Write dataframe to ElasticSearch

python - 如何使用PySpark将一个RDD拆分为两个RDD并将结果保存为RDD?

mysql - 使用现有行中的数据插入行

mysql - 在 CockroachDB 的 GROUP BY 子句的返回集中连接字符串

用于交叉链接表和外键使用的 Sqlite 设计

MySQL 将行转为动态数量的列

java - 在 Spark Scala 中处理微秒

pyspark - 使用 pyspark 对列上的值求和

SQL join,获取多个同名列

pyspark - Spark - 读取时如何跳过或忽略空 gzip 文件