【问题标题】:Formatting a date affecting MIN格式化影响 MIN 的日期
【发布时间】:2015-09-02 11:38:18
【问题描述】:

在我的 SELECT 查询中,我有:MIN(a.orderdue) AS 'Oldest order date'

这会带来最旧的订单日期,但它会带来如下日期格式:2015-06-11 11:30.000

所以我将 SELECT 查询修改为:

MIN (CONVERT(varchar(17),a.orderdue,103)) AS 'Oldest order date'

这会将日期设为 2015 年 11 月 6 日,这是更可取的。

但我注意到这样做会影响输出:MIN 函数不再返回第一个(最旧的)日期,而是完全不同的值。

我很欣赏这种类型的问题如果您自己无法运行查询就很难回答,但显然我更改日期的格式已经影响了 MIN 输出。有什么方法可以修改日期的格式而不发生这种情况?

谢谢

【问题讨论】:

  • 一旦将日期转换为 varchar,就会将其作为 varchar 进行比较,即比较第一个字符,然后比较第二个字符,因此在比较字符串时,字符串“01/01/ 2050”将出现在“31/12/1900”之后,因为“3 > 1”这就是用于比较的全部内容。因此,正如答案中所述,您首先需要获得最小值,然后应用格式 - 尽管实际上格式通常留给表示层,而不是在 SQL 中处理。
  • 感谢您不厌其烦地回复并注意到 re varchar。

标签: sql-server tsql date ssrs-2008-r2


【解决方案1】:

您需要在获得最小值之后应用格式

CONVERT(varchar(17), min(a.orderdue),103)

【讨论】:

    猜你喜欢
    • 2016-01-30
    • 1970-01-01
    • 2015-11-26
    • 2019-03-24
    • 2014-04-10
    • 1970-01-01
    • 2023-03-29
    • 2019-02-28
    • 1970-01-01
    相关资源
    最近更新 更多