【发布时间】:2026-02-15 01:15:01
【问题描述】:
我有一个名为table 的数据库表,并且Col 中有一个列table,数据类型为varchar。列 Col 包含格式为 MMM-YY 的日期。
例如Col 的值为:
| Col |
|---|
| DEC-21 |
| NOV-21 |
| SEP-20 |
| OCT-19 |
| DEC-21 |
我们可以看到数据可以像 DEC-21 一样被复制。我想根据Col 中最近一个月的数据提取最近 6 个月的数据。例如,如果 DEC-21 是最近的日期(考虑,日期不存在)等,我想要从 DEC-21 到 JUN-21 的数据,即如果我们将 DEC 映射到 12 和JUN 到 06。这个Table 有很多列,其中一列是我上面提到的Col,我必须使用 SQL 查询基于列Col 提取数据。
我写了一个查询:
SELECT *
FROM table
WHERE CAST(RIGHT(Col,4) AS INT) Between 2020 and 2021
但是在这里我得到了 2020 年到 2021 年之间的数据。所以,通过在上述查询中进行一些修改,或者是否有任何其他方法可以从 MMM-YYYY 格式从 @987654336 获取最近日期的过去 6 个月数据@专栏。
我在 R 中编写代码,我使用 dbGetQuery() 来传递 SQL 查询。在将其存储在数据框中后,我已经完成了此操作,但是有什么方法可以直接通过 sql 查询来完成吗?
任何帮助将不胜感激。
【问题讨论】:
-
也许根据 col 中的条目添加一个具有真实日期时间类型的新列会有所帮助。您可以将日期设置为月初。
-
是的,这可能会有所帮助,但我无法在表格中添加/删除列。有没有办法只使用“选择”来做到这一点?
-
是的,我可以看到输出,但是当我通过在 dbGetQuery() 中将此 sql 查询作为字符串传递来在 RStudio 中运行它时,它显示错误为“'|'附近的语法不正确”。我正在使用 Microsoft SQL Server。 MSSQL 的语法是否不同?
标签: sql sql-server date select