如何查找包含没有毫秒精度的DateTime的记录?

问题描述 投票:0回答:1

我有几个表,其中包含日期时间列。 在某些行中,日期时间的格式为 DD:MM:YYYY HH:MM:SS:MMM,而在某些行中,日期时间的格式为 DD:MM:YYYY HH:MM:SS - 相同,只是没有毫秒。

有没有办法只选择不包含毫秒的行(即 DateTime 列采用 DD:MM:YYYY HH:MM:SS 格式)。

微软 SQL Server

谢谢!

sql sql-server database datetime milliseconds
1个回答
0
投票

我会向表中添加一个持久计算列, 这样您就可以根据您对 ms 的逻辑计算结果。

USE tempdb;
GO
CREATE TABLE dbo.Example([ID] [int] NOT NULL IDENTITY(1,1) CONSTRAINT PK_Example PRIMARY KEY CLUSTERED,SomeKindOfDate DATETIME NOT NULL);
GO
INSERT dbo.Example(SomeKindOfDate)
VALUES(GETDATE()),('20240701 22:22:22.222'),('20240701 21:21:21');
GO
SELECT * FROM dbo.Example;
GO
ALTER TABLE dbo.Example ADD ContainsMS AS IIF(CONVERT(INT,DATEPART(ms,SomeKindOfDate))>0,1,0) PERSISTED;
GO
CREATE NONCLUSTERED INDEX IX_Example_ContainsMS ON dbo.Example (ContainsMS);
GO
SELECT ID, SomeKindOfDate FROM dbo.Example WHERE ContainsMS=0;
--Cleanup
DROP TABLE dbo.Example;
GO
© www.soinside.com 2019 - 2024. All rights reserved.