MSSQL案例陈述-如果时间为午夜,则为假,否则为真

MSSQL案例陈述-如果时间为午夜,则为假,否则为真,sql,sql-server,Sql,Sql Server,我希望构建一个符合以下逻辑的案例陈述: If the time of the date provided is midnight(00:00:00) then false(0), else true(1) 我希望在一个视图中展示这一点,该视图列出了一些发送到预定交付的订单,其中午夜是我们的默认时间(由于交付不会在午夜进行,这意味着尚未安排交付,将其设置为0/false。这将用作在web界面上显示红十字或绿色勾号的条件。) 非常感谢您的帮助 提前谢谢。怎么样 SELECT CASE WHEN C

我希望构建一个符合以下逻辑的案例陈述:

If the time of the date provided is midnight(00:00:00) then false(0), else true(1)
我希望在一个视图中展示这一点,该视图列出了一些发送到预定交付的订单,其中午夜是我们的默认时间(由于交付不会在午夜进行,这意味着尚未安排交付,将其设置为0/false。这将用作在web界面上显示红十字或绿色勾号的条件。)

非常感谢您的帮助

提前谢谢。

怎么样

SELECT CASE WHEN CAST([my-datetime] AS TIME) = '00:00:00.0000000' THEN 0 ELSE 1 END
FROM [my-table];
这应该行得通

DECLARE @TBL TABLE (midnight DATETIME)
INSERT INTO @TBL VALUES
('2012-06-18T10:34:09'),('2018-09-25T10:54:31'),('2018-09-25T00:00:00'),
('2018-09-25T12:07:09'),('2017-05-06T00:00:00'),('2016-08-19T08:11:35')

SELECT
midnight,
CAST(midnight AS TIME),
CASE WHEN CAST(midnight AS TIME)='00:00:00' THEN 0 ELSE 1 END AS 'midnight_Col'
FROM @TBL

字段的类型是什么?您可以将/cast转换为
time
,从
datetime
字段仅获取时间部分,例如
cast(somefieldas time)
。使用日期或时间字段作为计划标志是一个非常糟糕的主意。缺少的值首先由
NULL
表示。使用字段表示两种不同的内容也会导致严重的问题。此时的字段类型是
datetime
。不幸的是,这是检查是否有问题的唯一可行方法ng是否已安排;此视图用于显示“已发送给交付团队”的订单列表当我们的GeniusConnect应用程序失败时充当故障保护,这样我们就可以通过另一个SQL表手动添加它们。恐怕是快速修复的世界。编辑:我还想补充一点,我最初并没有构建此数据库,并且没有实现GeniusConnect何时不导入Outlook的标志。这是为我做的。太棒了。谢谢你,Lunc!
DECLARE @TBL TABLE (midnight DATETIME)
INSERT INTO @TBL VALUES
('2012-06-18T10:34:09'),('2018-09-25T10:54:31'),('2018-09-25T00:00:00'),
('2018-09-25T12:07:09'),('2017-05-06T00:00:00'),('2016-08-19T08:11:35')

SELECT
midnight,
CAST(midnight AS TIME),
CASE WHEN CAST(midnight AS TIME)='00:00:00' THEN 0 ELSE 1 END AS 'midnight_Col'
FROM @TBL