Каков самый быстрый способ получить только временную часть datetime - PullRequest
0 голосов
/ 04 августа 2020

Моя проблема в том, что мы используем столбец Datetime в нашей базе данных, но нам нужно отображать нашу дату в другом календаре, таком как Хиджри или Шамси, с Время .

Так со сложным Стоимость преобразования запроса очень высока, и мне нужен эффективный способ получить Время и объединить его с преобразованной частью даты.

Прямо сейчас я использую эти подходы

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

У меня такой вопрос:

Какой из них быстрее или подходит и есть ли более быстрый способ?

1 Ответ

2 голосов
/ 04 августа 2020

Просто приведите / преобразуйте его в time, чтобы сохранить правильный ввод (это все еще тип данных даты и времени):

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

Поскольку значение равно datetime, значение будет с точностью до 1/300 секунды, однако выберите точность, подходящую для ваших данных.

...