Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 2008 计算柱_Sql Server 2008_Tsql - Fatal编程技术网

Sql server 2008 计算柱

Sql server 2008 计算柱,sql-server-2008,tsql,Sql Server 2008,Tsql,我想在一个表中添加一列来计算另外两列中两个日期之间的周数。各栏分别为: [DateStart] [date] NULL, [DateEnd] [date] NULLNumOfWeeks, [NumOfWeeks] [int] 如果结束日期为空,则计算时间为开始日期和当前日期之间的周数 干杯, 凯文。简单: ALTER TABLE [table] ADD [NumOfWeeks] AS DATEDIFF(week, DateStart, COALESCE(DateEnd, GETDATE())

我想在一个表中添加一列来计算另外两列中两个日期之间的周数。各栏分别为:

[DateStart] [date] NULL,
[DateEnd] [date] NULLNumOfWeeks,
[NumOfWeeks] [int] 
如果结束日期为空,则计算时间为开始日期和当前日期之间的周数

干杯, 凯文。

简单:

ALTER TABLE [table] ADD
[NumOfWeeks] AS DATEDIFF(week, DateStart, COALESCE(DateEnd, GETDATE())

下面是同样有效的案例方法

ALTER TABLE Timeslots ADD
[NumOfWeeks] AS DATEDIFF(week, DateStart, CASE when DateEnd IS NULL THEN GETDATE() Else DateEnd END)

结果将是3,即完整周数。除非结束日期为空,否则啦啦队的表现完美。如果结束日期为空,则计算应为开始日期和当前日期之间的周数。干杯。我在回答中添加了这个案例。语法中似乎有两个问题:关键字“IS”附近的语法不正确。GETDATE()上的右括号表示“')”附近有不正确的语法。应为“(”或select。我正在使用SQL Express 2008:-)有趣。那个代码对我有用,我刚试过。我不确定使用SQLExpress2008进行此操作有什么限制。我会调查的。另一方面,为什么要使用计算列?为什么不在select语句中执行测试?这似乎更加有力。