【发布时间】:2019-09-16 22:47:27
【问题描述】:
我已更改数据库中的一个表以添加一个新列 LogDate:
ALTER TABLE AccountsTable
ADD LogDate bigint NOT NULL DEFAULT(0)
GO
现在我在这个新列 LogDate 中得到了结果,看起来像 1556366669。
之后我尝试更改我的登录过程并添加以下代码:
UPDATE [dbo].[AccountsTable]
SET LogDate = DATEDIFF(s, '19700101', GETDATE())
WHERE AccID = @id
UPDATE [dbo].[AccountsTable]
SET ConsecutiveDays =
CASE
WHEN CAST(LogDate as Date) = CAST(DATEADD(DAY, -1, GETDATE()) AS DATE)
AND ConsecutiveDays < 3
THEN ConsecutiveDays + 1
WHEN CAST(LogDate as Date) = CAST(GETDATE() AS DATE)
THEN ConsecutiveDays
ELSE 1
END,
ChallengesCompleted =
CASE
WHEN ConsecutiveDays = 3
AND CAST(LogDate AS DATE) = CAST(DATEADD(DAY, -1, GETDATE()) AS DATE)
THEN ChallengesCompleted + 1
ELSE ChallengesCompleted
END,
LogDate = GETDATE()
WHERE
AccID = @id
我在尝试使用上面的代码更改登录过程时遇到以下错误:
不允许从数据类型 bigint 到 date 的显式转换。
感谢任何帮助我解决该问题的方法。我使用的是 SQL Server 2008。
【问题讨论】:
-
查看答案更新,以及我们昨天开始的讨论(聊天)
标签: sql sql-server tsql sql-server-2008 stored-procedures