Два запроса: один, чтобы получить самую последнюю, а другой, чтобы получить самую старую дату? - PullRequest
0 голосов
/ 24 апреля 2019

Я думаю, что это очень простой вопрос.Я хочу получить последнюю дату и самую старую дату с запросом SQL.Datefield выглядит следующим образом: 24.04.2019 Если я пытаюсь получить самую последнюю и самую старую дату с помощью функций Min и Max, она не работает, потому что она просто смотрит на День.Таким образом, 01.01.1800 моложе 31.03.2019

TableA:

------------------------------
| A   | B  | C  | Date        |
------------------------------
| 1   | 2  | 3  | 13.02.2017  |
| 2   | 3  | 7  | 15.06.1985  |
| 3   | 3  | 4  | 14.04.2001  |
| 3   | 9  | 8  | 13.01.1789  |
-------------------------------

Исходя из приведенных выше данных, ожидаемый результат будет следующим:

-------------------------------
| Recent Date  | Oldest Date  |
-------------------------------
| 13.02.2017   | 13.01.1789   |
-------------------------------

Ответы [ 2 ]

1 голос
/ 24 апреля 2019

Вы должны привести строку к типу даты, используя CONVERT:

SELECT 
    MIN(CONVERT(DATE, column_name, 104)) AS minDate, 
    MAX(CONVERT(DATE, column_name, 104)) AS maxDate
FROM table_name

Не следует хранить значения даты в столбце, используя тип строки.Вместо этого используйте DATE или DATETIME2.

демо на dbfiddle.uk

0 голосов
/ 24 апреля 2019

enter image description here

Declare @max varchar(50)
Declare @min varchar(50)
select @min =  min(convert(DATE, date, 104)) from table4
select @max =  max(convert(DATE, date, 104)) from table4
select @max as Recent_Date,@min as Oldest_Date
...