сравнение двух дат в разных столбцах AS

#sql-server #database #tsql

#sql-сервер #База данных #tsql

Вопрос:

У меня есть два столбца со значениями даты.Я хотел бы отфильтровать их, чтобы увидеть результат только тогда, когда два столбца имеют одинаковые значения. У меня есть два вопроса в части «Где». Кто-нибудь может мне помочь с этим? 1) Как я могу сравнить значение между этими двумя столбцами со значениями даты? 2) Если у меня есть значение varchar вместо dates, как я могу сравнить два значения?

 SELECT [USERNAME], count(*) AS [NumberOfHappening], min([date1]) AS [FirstDate], max([date2]) AS [SecondDate]
FROM TableMain

WHERE CAST([FirstDate] AS DATE) = CAST([SecondDate] AS DATE)
GROUP BY  [USERNAME]
ORDER BY 'NumberOfHappening' DESC
  

Спасибо.

Комментарии:

1. Что вы подразумеваете под похожими значениями? Тот же год, тот же год и месяц, тот же год, месяц и день?

2. какова бы ни была ваша ситуация, если вы хотите использовать значение varchar в качестве даты, тогда лучше преобразовать значение varchar в datetime.

Ответ №1:

Правильно ли введены исходные значения даты или вы храните значения даты / времени в строковых столбцах? Если это так, вам действительно следует это изменить…

Если я правильно понял, вы хотите найти записи, где date1 и date2 находятся в один и тот же день. Приведение к DATETIME to DATE позволит избавиться от временной части.

Вы можете использовать CTE для прямого использования псевдонимов столбцов

 ;WITH cte AS
(
    SELECT [USERNAME], count(*) AS [NumberOfHappening], min([date1]) AS [FirstDate], max([date2]) AS [SecondDate]
    FROM TableMain
    GROUP BY  [USERNAME]
)
SELECT * 
FROM cte
WHERE CAST([FirstDate] AS DATE) = CAST([SecondDate] AS DATE)
ORDER BY NumberOfHappening DESC;
  

Комментарии:

1. Большое спасибо. Второй запрос работает хорошо, но первый запрос не работает. Это показывает мне следующую ошибку: в предложении WHERE не может отображаться агрегат, если только он не находится в подзапросе, который находится в предложении HAVING или в списке выбора, а агрегированный столбец является внешней ссылкой.