sql - 需要图书馆数据库中最近 30 天的数据

标签 sql

我需要过去 30 天内添加到此数据库的杂志。我尝试过以下方法:

SELECT A.TITLE, A.EDITION, B.DONATEDBY, B.DATE_ADDED
FROM LIBRARY A
JOIN LIB_COPIES B ON A.IDNO=B.IDNO
WHERE A.TYPE LIKE '%Magazine%'
  AND B.DONATEDBY LIKE '%State%'
  AND B.DATE_ADDED>CURRENT_DATE-31 
ORDER BY B.DATE_ADDED

从今天起它没有获得任何条目。

我已经尝试过

DATEDIFF(dateColumn, CURRENT_TIMESTAMP) BETWEEN 0 AND 30
AND >= DATEADD(day, -30, GETDATE())

我是新手,如果格式错误请原谅我。我把 B.Date_added 放在我认为应该放在的地方,因为这是我的专栏。

请帮助我!

最佳答案

假设您使用的是 MySQL,CURRENT_DATE-31 不会从当前日期减去 31 天。相反,它将 CURRENT_DATE 转换为整数并减去 31。

select CURRENT_DATE, CURRENT_DATE - 31;

CURRENT_DATE    CURRENT_DATE - 31
2020-01-10      20200079

相反,请使用date_sub(current_date, interval 31 day) .

select CURRENT_DATE, date_sub(CURRENT_DATE, interval 31 day);

CURRENT_DATE    date_sub(CURRENT_DATE, interval 31 day)
2020-01-10      2019-12-10

或者,如果您的意思是 1 个月,请使用间隔 1 个月


DATEDIFF(dateColumn,CURRENT_TIMESTAMP) BETWEEN 0 AND 30 不起作用,因为当 dateColumn 是过去时,差异将为负数。

select DATEDIFF("2020-01-01",current_date);

DATEDIFF("2020-01-01",current_date)
-9

相反,颠倒日期的顺序。

select DATEDIFF(current_date, "2020-01-01")

DATEDIFF(current_date, "2020-01-01")
9

关于sql - 需要图书馆数据库中最近 30 天的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59690007/

相关文章:

mysql - 优化包含重复查询作为子查询的 MySQL 查询?

sql - PostgreSQL:如何阅读并行解释分析(行与单线程不匹配)

mysql - 在使用逗号将键值存储在单个单元格中的情况下如何使用分组依据

mysql - 将 MySQL 查询转换为 Informix

sql - BigQuery 标准 SQL : Setting a value to positive or negative infinity

sql - 为什么需要这个 UNIQUE 约束?

mysql - mysql如何建立两个表的关系

mysql - 比较 MYSql 中的 NULL 值

mysql - 在具有不同条件的数据库表中查找两个条目

php - 从复选框查询