#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, как вы, кажется, предполагаете)