【问题标题】:How can i select a datetime as ddMMyy, so a two-digit year?我如何选择日期时间作为 ddMMyy,所以是两位数的年份?
【发布时间】:2015-03-12 19:59:19
【问题描述】:

出于性能原因,我正在用 sql 查询替换我的 C# 代码:

CreatedAt.ToString("ddMMyy", System.Globalization.CultureInfo.InvariantCulture)

将创建日期返回为140115(今天)。在 C# 中足够简单,但我如何在 T-SQL 中得到它?

我试过了:

REPLACE(CONVERT(CHAR(10), ChargeArrival.CreatedAt, 103), '/', '')

这几乎是正确的,但年份是四位数而不是两位,所以14012015 而不是140115

【问题讨论】:

  • 我不相信这会表现得更好。 SQL Server 中的数据类型转换也不是免费的。
  • @AaronBertrand:优化的一部分不是日期转换,而是替换 LINQ-To-SQL,其中对象包含由其他数据库查询初始化的复杂字段。现在我正在使用一个包含所有相关字段的视图。选择 100 行(加载 100 个对象)需要 20 秒,现在只需几分之一秒。
  • 好吧,这不是很清楚,听起来效率问题只是在 C# 中应用格式。

标签: sql sql-server tsql sql-server-2005 datetime-format


【解决方案1】:

作为docs for CONVERT 状态,如果您想要世纪,请使用103,如果您不想要,请使用3

REPLACE(CONVERT(CHAR(10), ChargeArrival.CreatedAt, 3), '/', '')

【讨论】:

  • 谢谢。我只见树木不见森林。
【解决方案2】:

你也可以用这个

SELECT REPLACE(CONVERT(CHAR(10), ChargeArrival.CreatedAt, 5), '-', '')

【讨论】:

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