日期:2014-05-18 浏览次数:20633 次
WITH T AS (SELECT *,CONVERT(DATETIME,STUFF(CONVERT(VARCHAR(19),getdate(),120),15,5,'00:00'),120) AS intdate, CASE WHEN DATEDIFF(SECOND,GETDATE(),CONVERT(DATETIME,STUFF(CONVERT(VARCHAR(19),date,120),15,5,'00:00'),120))>=0 THEN DATEDIFF(SECOND,GETDATE(),CONVERT(DATETIME,STUFF(CONVERT(VARCHAR(19),date,120),15,5,'00:00'),120)) ELSE 0-DATEDIFF(SECOND,GETDATE(),CONVERT(DATETIME,STUFF(CONVERT(VARCHAR(19),date,120),15,5,'00:00'),120)) END AS diffseconds FROM tb GROUP BY intdate) SELECT * FROM T b WHERE NOT EXISTS(SELECT 1 FROM T WHERE diffseconds<b.diffseconds)
------解决方案--------------------
有bug
WITH T AS (SELECT *,CONVERT(DATETIME,STUFF(CONVERT(VARCHAR(19),date,120),15,5,'00:00'),120) AS intdate, CASE WHEN DATEDIFF(SECOND,GETDATE(),CONVERT(DATETIME,STUFF(CONVERT(VARCHAR(19),date,120),15,5,'00:00'),120))>=0 THEN DATEDIFF(SECOND,GETDATE(),CONVERT(DATETIME,STUFF(CONVERT(VARCHAR(19),date,120),15,5,'00:00'),120)) ELSE 0-DATEDIFF(SECOND,GETDATE(),CONVERT(DATETIME,STUFF(CONVERT(VARCHAR(19),date,120),15,5,'00:00'),120)) END AS diffseconds FROM tb GROUP BY intdate) SELECT * FROM T b WHERE NOT EXISTS(SELECT 1 FROM T WHERE diffseconds<b.diffseconds)
------解决方案--------------------
----------------------------------------------
-- Author : htl258(Tony)
-- Date : 2010-05-10 00:26:24
-- Version: Microsoft SQL Server 2008 (RTM) - 10.0.1600.22 (Intel X86)
-- Jul 9 2008 14:43:34
-- Copyright (c) 1988-2008 Microsoft Corporation
-- Developer Edition on Windows NT 5.1 <X86> (Build 2600: Service Pack 3)
-- Blog : http://blog.csdn.net/htl258
----------------------------------------------
--> 生成测试数据表: [tb]
IF OBJECT_ID('[tb]') IS NOT NULL
DROP TABLE [tb]
GO
CREATE TABLE [tb] ([myid] [int],[date] [datetime],[data] [int])
INSERT INTO [tb]
SELECT '1','2010-4-3 7:55:00','4' UNION ALL
SELECT '2','2010-4-3 7:55:00','3' UNION ALL
SELECT '1','2010-4-3 8:01:00','4' UNION ALL
SELECT '2','2010-4-3 8:01:00','3' UNION ALL
SELECT '1','2010-4-3 8:07:00','4' UNION ALL
SELECT '2','2010-4-3 8:07:00','3' UNION ALL
SELECT '1','2010-4-3 8:55:00','4' UNION ALL
SELECT '2','2010-4-3 8:55:00','3' UNION ALL
SELECT '1','2010-4-3 9:01:00','4' UNION ALL
SELECT '2','2010-4-3 9:01:00','3' UNION ALL
SELECT '1','2010-4-4 7:55:00','4' UNION ALL
SELECT '2','2010-4-4 7:55:00','3' UNION ALL
SELECT '1','2010-4-4 8:01:00','4' UNION ALL
SELECT '2','2010-4-4 8:01:00','2' UNION ALL
SELECT '1','2010-4-4 8:07:00','4' UNION ALL
SELECT '2','2010-4-4 8:07:00','2' UNION ALL
SELECT '1','2010-4-4 8:55:00','4' UNION ALL
SELECT '2','2010-4-4 8:55:00','3' UNION ALL
SELECT '1','2010-4-4 9:01:00','4' UNION ALL
SELECT '2','2010-4-4 9:01:00','2'
--SELECT * FROM [tb]
-->SQL查询如下:
;with t as
(
select t