仅获取日期时间的时间部分的最快方法是什么
What is the fastest way to get only time part of datetime
我的问题是我们在数据库中使用了 Datetime
列,但我们需要在不同的日历中显示我们的日期,例如 Hijri 或 Shamsi Time。
因此,对于复杂的查询,转换成本非常高,我需要一种有效的方法来获取 Time 并将其与转换后的日期部分连接起来。
现在我正在使用这些方法
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
我的问题是:
哪个更快或更适合,有没有更快的方法?
只是 cast/convert 到 time
,因为它保留了正确的类型(它仍然是日期和时间数据类型):
SELECT CONVERT(time(0),datetimevalue), CAST(datetimevalue AS time(3))
由于值为 datetime
,该值将精确到 1/300 秒,但是,请选择适合您的数据的精度。
我的问题是我们在数据库中使用了 Datetime
列,但我们需要在不同的日历中显示我们的日期,例如 Hijri 或 Shamsi Time。
因此,对于复杂的查询,转换成本非常高,我需要一种有效的方法来获取 Time 并将其与转换后的日期部分连接起来。
现在我正在使用这些方法
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
我的问题是:
哪个更快或更适合,有没有更快的方法?
只是 cast/convert 到 time
,因为它保留了正确的类型(它仍然是日期和时间数据类型):
SELECT CONVERT(time(0),datetimevalue), CAST(datetimevalue AS time(3))
由于值为 datetime
,该值将精确到 1/300 秒,但是,请选择适合您的数据的精度。