【问题标题】:Two Queries : One to get the most recent and one to get the oldest date?两个查询:一个获取最新日期,一个获取最旧日期?
【发布时间】:2019-09-13 10:08:06
【问题描述】:

我认为这是一个非常简单的问题。我想通过 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   |
-------------------------------

【问题讨论】:

  • 帮助我们帮助您 - 请分享表格的结构和数据类型。另外,请用您正在使用的rdbms 标记您的问题。
  • “最近和最旧的日期”是什么意思?我想不通。加:请标记您正在使用的 RDBMS。 MySQL、SQL Server、...?
  • 在我的示例中,最近的时间是:13.02.2017 和最旧的 13.01.1789。我正在使用 SQL 管理。希望这些信息对你有所帮助
  • 您只想要日期还是整行?
  • 修复你的数据模型!不要将日期存储为字符串,使用 date 数据类型存储它们。

标签: sql sql-server date max min


【解决方案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

【讨论】:

  • @ProgrammNoob1009 。 . .如果这解决了您的问题,您应该接受答案。
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 2021-06-07
    • 2012-05-29
    • 1970-01-01
    • 2015-10-25
    • 2014-12-14
    • 2021-09-01
    • 2021-06-26
    • 1970-01-01
    • 2012-01-22
    相关资源
    最近更新 更多