【问题标题】:Extracting data from only the year仅从年份中提取数据
【发布时间】:2021-12-02 08:16:57
【问题描述】:

我在 SQL 中的表中有日期数据,但是如何仅选择 2021 年发生的数据。(日期看起来像 2020 年 10 月 31 日)。日期是实际的日期变量,而不仅仅是文本。

【问题讨论】:

  • 您的 DBMS 是什么?您提到的日期列的数据类型是什么?
  • 在制作表格时,如果有帮助,我会为变量添加“Stipdate date”。这是一个“日期”类型变量。

标签: sql


【解决方案1】:

您应该避免将日期存储为文本,而应该使用适当的日期列。话虽如此,您可以检查日期字符串的正确 4 个字符:

SELECT *
FROM yourTable
WHERE RIGHT(date_col, 4) = '2021';

如果该列是实际日期类型,则使用:

SELECT *
FROM yourTable
WHERE date_col >= '2021-01-01' AND date_col < '2022-01-01';

【讨论】:

  • 对不起。这是一个适当的“日期”变量。如何使用正确的日期变量来做到这一点?
  • 你的数据库是什么?
  • 这是我自己创建并输入数据的表格。
  • SELECT * FROM yourTable WHERE date_col >= '2021-01-01' AND date_col
【解决方案2】:

在查看您之前的帖子后,我怀疑您的数据库是 Oracle。然后就可以使用了

SELECT *
  FROM yourTable 
 WHERE EXTRACT(year FROM dt) = 2021  

SELECT *
  FROM yourTable 
 WHERE TRUNC(dt,'YYYY') = date'2021-01-01' 

SELECT *
  FROM yourTable 
 WHERE dt BETWEEN date'2021-01-01' AND date'2021-12-31' 

如果日期列上有一个索引(即dt),则可以使用最后一个 SELECT 语句使索引受益

【讨论】:

    【解决方案3】:

    如果使用 MSSQL,您可以利用 YEAR(...) 从日期中提取年份。

    将 和 分别替换为表名和日期列名。

    select * from &lt;tablename&gt; where year(&lt;datecolumn&gt;) = 2021

    【讨论】:

    • 我得到“YEAR”是一个无效的标识符。
    猜你喜欢
    • 2022-10-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多