【问题标题】:T-SQL clause where with datepart from fieldT-SQL 子句 where with datepart from field
【发布时间】:2017-12-22 15:09:02
【问题描述】:

我需要这样写:

select a, b, c 
from table
where dateadd(a, b, c) < getdate()

与:

a=nvarchar: YY, D, ...
b=int
c=date

对于“b”和“c”没有问题,但是datepart不能是字段,只能是静态类型:只是YY,YYYY,D,....

我该如何解决?

实际上问题是另一个问题,但这个系统似乎更容易解决。

原来的问题是这样的,也许你可以用另一种方式解决它:我有一个表的行在称为 X 的持续时间内保持有效。

如果此持续时间 X 以天为单位定义,则闰年存在问题(例如,365 天与 1 年不同)。如果我以年(例如 1 年)或月表示,datepart 函数可以帮助我:dateadd (YY, 1, dateFrom) 是完美的。

所以我想不使用以天表示的“有效期”字段,而是使用两个字段,一个用于值,一个用于类型(月、年、周)。

只有那个日期部分不允许。

【问题讨论】:

  • 自己解决

标签: sql-server tsql select datepart


【解决方案1】:

自己解决。

 where
      CASE [a]  
         WHEN 'YY' THEN dateadd(YY,[b],[c])
         WHEN 'DD' THEN dateadd(DD,[b],[c])
...
      END

不优雅,但它有效。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-01-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-07
    • 2011-05-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多