【问题标题】:What is the fastest way to get only time part of datetime什么是获取日期时间的唯一时间部分的最快方法
【发布时间】:2020-11-24 10:48:48
【问题描述】:

我的问题是我们在数据库中使用Datetime 列,但我们需要在不同的日历中显示我们的日期,如回历或 Shamsi 以及 时间

因此,复杂查询的转换成本非常高,我需要一种有效的方法来获取 时间 并将其与转换后的日期部分连接起来。

现在我正在使用这些方法

1-

CONCAT(dbo.getShamsiDate( JI.Job_start_execution_date ),' ',FORMAT(JI.Job_start_execution_date,'HH:mm:s')) AS [JobStart]

JobStart
1399/05/13 19:25:47

2-

SELECT CONVERT(VARCHAR(10), @Job_start_execution_date , 108) JobStart;

JobStart
----------
14:43:35

我的问题是这样的:

哪个更快或更适合,有没有更快的方法?

【问题讨论】:

  • 格式可能是slowestCAST(... as Time) 也是一种可能。
  • 同意FORMAT 可能是最慢的。对于单个标量值来说它“很好”,但它的扩展性很差。如果您确实需要格式化字符串,但由于某种原因无法在表示层中完成,那么带有样式代码的CONVERT 是您的最佳选择。

标签: sql-server datetime time sql-server-2016


【解决方案1】:

只需将其转换/转换为 time,因为它会保留正确的类型(它仍然是日期和时间数据类型):

SELECT CONVERT(time(0),datetimevalue), CAST(datetimevalue AS time(3))

由于该值为datetime,因此该值将精确到 1/300 秒,但是,请选择适合您数据的精度。

【讨论】:

    猜你喜欢
    • 2011-08-27
    • 1970-01-01
    • 2011-06-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-16
    • 1970-01-01
    相关资源
    最近更新 更多