【发布时间】:2014-04-27 17:52:41
【问题描述】:
有没有办法在 SQL 表中保存如下公式?
-- first Monday in @month of current year
dateadd(d, datediff(d, 0, dateadd(m, @month-1,
dateadd(yy, datediff(yy, 0, getdate()), 6)))/7*7, 0),
-- last Monday in @month of current year
dateadd(d, datediff(d, 0, dateadd(m, @month,
dateadd(yy, datediff(yy, 0, getdate()), 6)))/7*7, -7),
-- third Friday in @month of current year
dateadd(d, datediff(d, 0, dateadd(m, @month-1,
dateadd(yy, datediff(yy, 0, getdate()), 3)))/7*7, 18)
我有一个包含多个国家/地区的表格,需要为每个国家/地区保存可变日期,如下例所示。 这些日期是简单的日期计算,例如总是五月的第一个星期一等。 因此,我试图找到处理日期值每年都在变化的此类事情的最佳方法——大约 30 个国家/地区中的每个国家/地区都需要 5 到 10 个日期。
我对 SQL 还很陌生,所以这更多的是要找出处理此类问题的选项。
非常感谢 Mike 对此提供的任何帮助和建议。
【问题讨论】:
-
您是否尝试将公式存储为文本,然后稍后再执行?
-
不太确定您在寻找什么,但您可能想考虑创建一个
vieww3schools.com/sql/sql_view.asp -
安迪:是的,这就是我所希望的。我刚刚更新了我的帖子,因为这更多地是为了了解处理此类事情的选项。理想情况下,我希望避免在我的页面上的存储过程或 PHP 中包含 30 个 case 语句的列表,因此我尝试以这种方式对其进行排序。
-
我认为存储过程中的 30 个 CASE 语句比将此函数作为字符串保存在数据库中更好
-
@M.Ali:谢谢。所以这将类似于 PHP 中的 Switch 语句?这在 SQL 中是否存在?如果我的列表增加到 50 个或更多,会有任何(性能)问题吗?
标签: sql sql-server dynamic calculated-columns