SQL добавить дату и время, добавить час, добавить минуту

#sql #sql-server #datetime #add #hour

#sql #sql-сервер #дата и время #Добавить #час

Вопрос:

В моей таблице у меня есть DateTime , Hour столбец.

пример: 2012-05-14 00:00:00.000 и 1230

Как я могу добавить этот hour столбец в свой Datetime столбец, чтобы я мог иметь

 2012-05-14 12:30:00.000
  

Я пытался с этим:

 SELECT DATE_DEBUT, HEURE_DEBUT, 
   DATEADD(hour, CONVERT(int, SUBSTRING(HEURE_DEBUT, 0, 2)), DATE_DEBUT) AS DateTemp, 
   DATEADD(hour, CONVERT(int, SUBSTRING(HEURE_DEBUT, 2, 2)), DateTemp) AS DateComplete
FROM ESPTEMPS_PROGRAMMATION
  

но это не работает.

заранее благодарю вас, Стев

Ответ №1:

Насколько я понимаю, вы хотите добавить первые две цифры как час, вторые две как минуту — но вы не делаете этого в своих DATEADD вызовах — вы добавляете обе части как HOUR — попробуйте это вместо:

 SELECT DATE_DEBUT, HEURE_DEBUT, 
   DATEADD(MINUTE, CONVERT(int, SUBSTRING(HEURE_DEBUT, 3, 2)), 
              DATEADD(HOUR, CONVERT(int, SUBSTRING(HEURE_DEBUT, 1, 2)), DATE_DEBUT))
FROM ESPTEMPS_PROGRAMMATION
  

Здесь я использую два вложенных, DATEADD внутренний DATEADD добавляет часы, внешний добавляет минуты к результату добавления часов.

Также: SUBSTRING в SQL Server основан на 1, например, первый символ строки находится в позиции 1 (а не 0, как вы, кажется, предполагаете)