【发布时间】: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