两个查询:一个是获取最新的,一个是获取最早的日期?

问题描述 投票:0回答:2

我认为这是一个非常简单的问题。我想用SQL查询获取最近的日期和最早的日期。 Datefield看起来像这样:24.04.2019如果我试图通过MinMax函数获得最近和最早的日期,它不起作用,因为它只是看一天。所以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   |
-------------------------------
sql sql-server date max min
2个回答
1
投票

您必须使用CONVERT将字符串转换为日期类型:

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

不应使用字符串类型将日期值存储在列上。请改用DATEDATETIME2

demo on dbfiddle.uk


0
投票

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
© www.soinside.com 2019 - 2024. All rights reserved.