在SQL 2008中满足IF IF条件中的默认值

时间:2013-01-31 18:32:20

标签: sql sql-server-2008 tsql create-table getdate

首先,我对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

在drop和create之后,数据库在末尾添加一个名为date的列,并将todays date设置为默认值。我的问题是在上午12:00导入数据时,当前日期实际上是明天。出于会计目的,我需要将这些数据保存在同一天。

我在黑暗中拍摄并试了一下,但语法都错了......

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

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

感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

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

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

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

AsOfDate date default (case when datepart(hh, getdate()) = 24 then cast(getdate() - 1 as date) else cast(getdate() as date) end)