SQL列无法转换日期/时间

时间:2016-02-29 22:13:36

标签: sql-server

我有一个SQL表,其中包含一个记录客户登录和注销时间的列。在注销时间,有时他们会在午夜注销,将计时器设置为“0”而不是像12:00 AM。有没有办法允许接受这个0?或更改为12:00 AM?

这是我使用的SQL命令:

CREATE TABLE LogoutIncidents 
(
    ID INT PRIMARY KEY IDENTITY(1,1),
    [Name] NVARCHAR(30),
    [Logout Time] NVARCHAR(30),
    [LogoutInc] NVARCHAR(30)
)

INSERT INTO LogoutIncidents
    SELECT 
        loginlogout.[Name], loginlogout.[Logout Time],
        CASE
            WHEN ABS(DATEDIFF(MINUTE, loginlogout.[Logout Time], Schedules$.StopTime)) BETWEEN 0 AND 4 
              THEN 0
            WHEN [Logout Time] = 0 
              THEN 0
            ELSE 1
        END AS LogoutInc 
    FROM 
        loginlogout 
    JOIN 
        Schedules$ ON loginlogout.[Name] = Schedules$.Name

错误:

  

Msg 241,Level 16,State 1,Line 76
  从字符串转换日期和/或时间时转换失败。

任何帮助都会一如既往地受到赞赏。

2 个答案:

答案 0 :(得分:5)

几乎只有一件事要做:不要在字符串中存储时间或日期(varchar / nvarchar)!

使用适当的类型,例如timedatetime2(如果注销也有日期组件)。

答案 1 :(得分:0)

我没有足够的代表来添加评论,但为什么不先对表格进行更新,将0替换为相应的午夜时间(大概是当天?)

示例:

violinplot(x, showmeans=True, showmedians=False, widths=1.0, showextrema=False)