有啥办法可以缩短这个 SQL 查询

Posted

技术标签:

【中文标题】有啥办法可以缩短这个 SQL 查询【英文标题】:Is there any way to shorten this SQL Query有什么办法可以缩短这个 SQL 查询 【发布时间】:2021-08-20 17:25:58 【问题描述】:
SELECT * FROM userfeedback WHERE
    DATE LIKE '2020-07%' OR
    DATE LIKE '2020-08%' OR
    DATE LIKE '2020-09%' OR
    DATE LIKE '2020-10%' OR
    DATE LIKE '2020-11%' OR
    DATE LIKE '2020-12%' OR
    DATE LIKE '2021-01%' OR
    DATE LIKE '2021-02%' OR
    DATE LIKE '2021-03%' OR
    DATE LIKE '2021-04%' OR
    DATE LIKE '2021-05%' OR
    DATE LIKE '2021-06%';

注意:这里 DATE 是一个列名,其类型为 Timestamp

【问题讨论】:

DATE 列是存储为字符串还是正确的日期?您可以使用带有BETWEEN 的范围查询,如果您使用的是真实日期列。 【参考方案1】:

这是一种方法:

SELECT * FROM userfeedback 
WHERE DATE between '2020-07-01' and '2021-06-30'

旁注:日期是关键字,最好不要用作对象名称(clumn name等)

【讨论】:

【参考方案2】:

如果我理解正确,您希望检索 2020 年 7 月至 2021 年 6 月的所有数据。 由于您声明 DATE 数据类型是时间图,您可以执行以下操作:

SELECT * 
FROM userfeedback 
WHERE 
  DATE >= '2020-07-01' AND
  DATE < '2021-07-01' 

PS:我会避免使用 BETWEEN,因为在使用时间戳时会产生不希望的结果。

【讨论】:

以上是关于有啥办法可以缩短这个 SQL 查询的主要内容,如果未能解决你的问题,请参考以下文章

这个 SQL 查询有啥问题[重复]

缩短并优化多个表的查询

在这个 SQL 查询中 Tmp(email) 有啥用?

缩短重复的SQL查询

这个 DB2 SQL 查询有啥问题?

sql语句中嵌套时候用in 和=有啥区别