【问题标题】:check if date has exceeded 1year in sql检查sql中的日期是否超过1年
【发布时间】:2013-08-06 09:18:17
【问题描述】:
ID  Source  Date           Desc      flgdeladvsourcedetails
22  5       1-Oct-12       a              NULL
23  5       1-Nov-12       b              NULL
24  5       1-Dec-12       c              NULL
25  5       1-Nov-12       d              NULL
26  5       1-Dec-12       e              NULL
27  5       1-Sep-12       f              NULL
28  5       24-Sep-12      g              NULL
29  5       7-Aug-12       h              NULL
30  5       1-Sep-12       i              NULL
31  5       1-Sep-12       j              NULL
32  5       15-Sep-12      k              NULL

以上日期为合同开始日期。我必须显示合同日期不超过 1 年的记录。

该日期的 1 年后不应显示该记录。

我想检查表格的各个日期。不是当前日期。类似的例子。如果当前日期是 2013 年 10 月 2 日,则不会看到 1 oct 12 的数据

【问题讨论】:

    标签: sql sql-server sql-server-2008 sqlite tsql


    【解决方案1】:

    使用DATEADD()[Date] 与一年前的日期进行比较:

    SELECT ID, Source, Date, Desc, flgdeladvsourcedetails
    FROM table
    WHERE DATEADD(year, -1, GETDATE())<[Date]
    

    【讨论】:

    • 我想检查表格的各个日期。不是当前日期。类似的例子。 2013 年 10 月 2 日之后将看不到 1oct12 的数据
    • 当您说 2013 年 10 月 2 日时,您是指 当前日期 是 2013 年 10 月 2 日吗?
    【解决方案2】:

    您可以使用WHEREDATEADD

    SELECT ID, SOURCE, DATE, DESC
    FROM YourTable
    WHERE DATEADD(YEAR, -1, GETDATE()) < [DATE]
    

    【讨论】:

    • 这将显示未来不到 1 年的所有日期...?
    【解决方案3】:

    试试这个

    select id, source, date, desc, flg...
    from table where dateadd(year,1,[date]) > getdate()
    

    【讨论】:

      【解决方案4】:

      这可能有用

      select * from TableName where CAST(DateAdd(YEAR,1, Date)AS date) < CAST(getdate() AS DATE)
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-11-14
        • 1970-01-01
        • 1970-01-01
        • 2013-02-03
        • 1970-01-01
        相关资源
        最近更新 更多