Как я могу вычесть целое число секунд из даты-времени

#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 есть, в чем смысл кастинга? Если это не так, слепое приведение без указания формата может привести к ошибкам.