【问题标题】:How can I use DATEPART to return all rows with a specific year如何使用 DATEPART 返回具有特定年份的所有行
【发布时间】:2015-11-25 11:22:18
【问题描述】:

我的数据库有一个表“事件”。列包括“名称”、“日期”和“类型” 我想运行一个返回给定日期和类型的所有事件名称的查询。

首先,我如何使用 DATEPART 来分解日期并让它按年份来识别。

【问题讨论】:

  • 请标记使用的 dbms。 (DATEPART 不是 ANSI SQL...)

标签: sql datepart


【解决方案1】:

假设您使用的是 SQL Server,并且您的“日期”列是 DATE 或 DATETIME 数据类型,您可以这样做:

    SELECT GETDATE() -- i.e. will return 2015-11-25 11:27:27.700
    SELECT DATEPART(YEAR,GETDATE()) -- returns 2015

因此,例如,您获取 2015 年所有事件的查询可能如下所示:

    SELECT Name, Date, Type 
    FROM Events
    WHERE DATEPART(YEAR,Date) = 2015 
    AND TYPE = <your type condition> 
    ORDER BY Date;

【讨论】:

    【解决方案2】:

    如果您使用 'datepart' 函数,它将为数据库中的每一行调用,这可能会很昂贵。

    最好使用范围选择年份,然后它可以使用索引在您的数据库中搜索相关行。

    select * from Events where [Date]&gt;='1 jan 2015' and [Date]&lt;'1 jan 2016' and [type]=1

    【讨论】:

      猜你喜欢
      • 2018-01-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-06-23
      • 1970-01-01
      • 1970-01-01
      • 2014-02-19
      • 1970-01-01
      相关资源
      最近更新 更多