SQL查询只需要午夜样本



我在总计上运行查询,我只希望00.00.00小时的样本。我已经搜索以查看是否可以在时间戳字段上使用通配符,但没有答案。我已经评论了下面尝试使用'00:00:00'对表中的" ts"(时间戳)字段使用的行,因为它不起作用。有没有办法只能从桌子上拉出午夜样本?

SELECT TOP (100) percent
       [ts] AS 'Timestamp'
      ,[value]
  FROM [enteliwebDB].[dbo].[UASTP_150000_TL63]
  where ts > dateadd(day, datediff(day, 0 ,getdate())-31, 0)
  --and ts = '00:00:00'
Timestamp                   value
2019-01-21 00:00:00.0040000 1122981.5
2019-01-21 01:00:00.0030000 1125681.625
2019-01-21 02:00:00.0020000 1128380.75
2019-01-21 03:00:00.0020000 1131080.5
2019-01-21 04:00:00.0020000 1133778.625
2019-01-21 05:00:00.0020000 1136477.625
2019-01-21 06:00:00.0030000 1139177.875
2019-01-21 07:00:00.0010000 1141877.375
2019-01-21 08:00:00.0030000 1144579.125
2019-01-21 09:00:00.0010000 1147277.625
2019-01-21 10:00:00.0030000 1149976.375
2019-01-21 11:00:00.0000000 1152676.25
2019-01-21 12:00:00.0020000 1155376.75
2019-01-21 13:00:00.0030000 1158078.25
2019-01-21 14:00:00.0040000 1160776.875
2019-01-21 15:00:00.0030000 1163476.125
2019-01-21 16:00:00.0000000 1166175
2019-01-21 17:00:00.0000000 1168872.75
2019-01-21 18:00:00.0020000 1171571.5
2019-01-21 19:00:00.0030000 1174271.875
2019-01-21 20:00:00.0010000 1176972.625
...

您在那里有毫秒,您可以在午夜之后的第一个一秒钟内仅包括时间。我正在使用日期来计算自一天午夜以来我们在

中的整个秒
SELECT TOP (100) percent
       [ts] AS 'Timestamp'
      ,[value]
  FROM [enteliwebDB].[dbo].[UASTP_150000_TL63]
  where ts > dateadd(day, datediff(day, 0 ,getdate())-31, 0) and (DATEDIFF(second,cast(ts as date),ts)) = 0

您可以使用转换来键入TIME,并将其与00:00:00

进行比较
AND CONVERT(TIME, [ts]) = '00:00:00'

,或者如果您想要所有记录,无论毫秒是否总是完全准确0(如您的示例中):

AND CONVERT(TIME, [ts]) >= '00:00:00'
AND CONVERT(TIME, [ts])  < '00:00:01'

最新更新