22,209
社区成员
发帖
与我相关
我的任务
分享
SELECT *
FROM ( SELECT ROW_NUMBER() OVER ( PARTITION BY CONVERT(VARCHAR(13), DH_DataTime, 120)
ORDER BY DH_DataTime ) AS num , * FROM 表名 ) a
WHERE num = 1;
SELECT * FROM (
SELECT ROW_NUMBER() OVER(PARTITION BY CONVERT(varchar(13),DH_DataTime,120) ORDER BY DH_DataTime) AS num ,
* FROM 表名
) a WHERE num=1
IF OBJECT_ID('tempdb..#tab') IS NOT NULL
DROP TABLE #tab
CREATE TABLE #tab(
dh_datetime DATETIME
)
DECLARE @i INT,
@a INT
SET @a=1
SET @i=1000
WHILE @a<@i
BEGIN
INSERT INTO #tab
SELECT dateadd(minute,@a,GETDATE())
SET @a=@a+1
END
SELECT * FROM #tab
--测试数据结束
DECLARE @begindt DATETIME, --指定范围开始时间
@endtime DATETIME --指定范围结束时间
SET @begindt='2018-02-05 13:42:05.320'
SET @endtime='2018-02-06 06:20:05.433'
;WITH cte AS (
SELECT *,
ROW_NUMBER() OVER(
PARTITION BY CAST(dh_datetime AS DATE),
DATEPART(hour, dh_datetime) ORDER BY dh_datetime
) AS rn
FROM #tab
WHERE dh_datetime BETWEEN @begindt AND @endtime
)
SELECT dh_datetime FROM cte
WHERE rn=1