如何在 SQL 服务器中获取日期时间重复行?

How to get datetime duplicate rows in SQL Server?

我试图在 table、

中查找重复的 DATETIME

我的列有日期时间值,例如 2015-01-11 11:24:10.000

我必须得到 2015-01-11 11:24 类型的副本。剩下的,不重要。当我将 SELECT 与 'convert(nvarchar(16),column,121)' 一起使用时,我可以获得正确的值,但是当我将其放入代码中时,我必须使用 'group by' 语句,因此

我的代码是:

  SELECT ID,
         RECEIPT_BARCODE,
         convert(nvarchar(16),TRANS_DATE,121),
         PTYPE
    FROM TRANSACTION_HEADER
   WHERE TRANS_DATE BETWEEN '11.01.2015' AND '12.01.2015' 
GROUP BY ID,RECEIPT_BARCODE,convert(nvarchar(16),TRANS_DATE,121),PTYPE
  HAVING COUNT(convert(nvarchar(16),TRANS_DATE,121)) > 1

由于 SQL 强制我在 GROUP BY 语句中使用 'convert(nvarchar(16),TRANS_DATE,121)',我无法获得重复值。

对此有什么想法吗?

提前致谢。

如果您想要复制的实际 ,请改用 window 函数:

SELECT  th.*, convert(nvarchar(16),TRANS_DATE,121)
FROM (SELECT th.*, COUNT(*) OVER (PARTITION BY convert(nvarchar(16),TRANS_DATE,121)) as cnt
      FROM TRANSACTION_HEADER th
      WHERE TRANS_DATE BETWEEN '11.01.2015' AND '12.01.2015' 
     ) th
WHERE cnt > 1;
SELECT   ID,RECEIPT_BARCODE,convert(nvarchar(16),TRANS_DATE,121), PTYPE ,COUNT(*)
FROM    TRANSACTION_HEADER
WHERE   TRANS_DATE BETWEEN '11.01.2015' AND '12.01.2015' 
GROUP   ID,RECEIPT_BARCODE,convert(nvarchar(16),TRANS_DATE,121), PTYPE
HAVING   COUNT(*)>1;

我觉得你可以直接用count(*)here.try上面那个