#sql #sql-server #tsql #datetime
Вопрос:
У меня есть этот столик.
Я хотел бы добавить столбец, который эквивалентен записи времени за вычетом времени ожидания, которое указано в секундах, и также приведет к дате и времени.
Комментарии:
1. Подсказка:
DATEADD()
.2.
int
s-это не времена, вы не можете понять разницу междуtime_record
иIdle_time
, поскольку это совершенно разные типы данных. Это все равно, что просить сумму аdecimal
иvarchar
; что такое10.2 'car'
? Чего вы на самом деле пытаетесь здесь достичь? Каковы ваши ожидаемые результаты? Что вы пытались сделать, чтобы достичь этих результатов? Почему они не сработали? Кроме того, пожалуйста, предоставьте данные в удобном для использования формате, а не изображение, пожалуйста.3. В соответствии с руководством по вопросам, пожалуйста, покажите, что вы пробовали, и расскажите нам, что вы нашли (на этом сайте или в другом месте) и почему это не соответствует вашим потребностям.
Ответ №1:
select Idle_ID, Emp_ID, Idle_Time,
dateadd(ss,-Idle_Time,Time_Record) as StartTime,
Time_Record as EndTime
from tbl_Idle;
Комментарии:
1. Если колонка уже
datetime
есть, в чем смысл кастинга? Если это не так, слепое приведение без указания формата может привести к ошибкам.2. Сколько усилий вы на самом деле экономите, написав «сс», а не «второй»? И насколько более читабельным становится код, когда вы пишете последний? И перестаньте зубрить свой код вместе — выработайте хорошие привычки.
3. @SMor все, что помогает тебе спать по ночам.
Ответ №2:
Используйте функцию DATEADD, чтобы добавить секунды, как показано здесь’
DATEADD(ss,-Idle_Time,CONVERT(DATETIME,Time_Record))
Комментарии:
1. Это ничем не отличается от предыдущего ответа, вплоть до, вероятно, ненужного
CONVERT
иCAST
. Если колонка ужеdatetime
есть, в чем смысл кастинга? Если это не так, слепое приведение без указания формата может привести к ошибкам.