1

首先,我对SQL查询很陌生,所以如果我听起来很无知,我很抱歉......

我有一个数据库,它有一个存储的作业,每小时删除和创建一个表。该表看起来像这样,除了在 1 到 24 之间的每个小时都有数据

Name         Hour1  Hour24
Point 1 OUT  4      5
Point 1 IN   26     22
Point 2 OUT  46     44    
Point 2 IN   0      0
Point 3 OUT  18     19
Point 3 IN   56     51
Point 4 OUT  111    100
Point 4 IN   0      0
Point 5 OUT  0      0
Point 5 IN   42     46
Point 6 IN   210    211

在删除和创建之后,数据库会在末尾添加一个名为 date 的列,并将今天的日期设置为默认值。我的问题是在上午 12:00 导入数据时,当前日期实际上是明天。出于会计目的,我需要该数据具有同一天。

我在黑暗中拍摄并尝试了这个,但语法都是错误的......

[Date] [datetime] DEFAULT if(DATEPART(hh)=24) CONVERT(GETDATE(DATEPART(dd)-1))

在创建表查询中是否可以使用这样的 if 语句?有没有更好的方法来解决这个问题?

谢谢您的帮助!

4

1 回答 1

1

是的,您可以设置默认值,但您希望语法正确:

[date] datetime default (case when datepart(hh, getdate()) = 24 then getdate() - 1 else getdate() end)

但是,我认为您不应该datetime在名为“日期”的字段中设置值。怎么样:

AsOfDate date default (case when datepart(hh, getdate()) = 24 then cast(getdate() - 1 as date) else cast(getdate() as date) end)
于 2013-01-31T19:10:28.260 回答