Как я могу добавить 100 лет к дате в базе данных Advantage
У меня есть куча записей в моей базе данных Advantage, которая закончилась 1909 годом, а не 2009 годом. Как можно выполнить оператор обновления, который добавит 100 лет к каждой из этих дат? (Преимущество говорит мне, что нет функции "str()", и она не позволит мне объединить месяц (mydate) с "/".
2 ответа
Вы могли бы использовать следующее
UPDATE mytable
SET mydate = CAST( TIMESTAMPADD( SQL_TSI_YEAR, 100, datefield ) as SQL_DATE )
WHERE YEAR( datefield ) = 1909
(если у вас есть поле метки времени, а не поле даты, вы можете не указывать CAST ... AS SQL_DATE)
Чтобы объединить, вы должны объединить строки, чтобы изменить на строку, которую вы можете использовать CAST или CONVERT
UPDATE mytable
SET datefield = CAST ( TRIM( CAST( MONTH(datefield) AS SQL_CHAR ) ) + '/' + TRIM( CAST( DAYOFMONTH( datefield ) AS SQL_CHAR ) ) + '/2009' AS SQL_DATE )
WHERE YEAR( datefield ) = 1909
(если у вас есть поле с отметкой времени, а не поле с датой, вы можете не указывать CAST ... AS SQL_DATE, но тогда вам нужно повторно добавить время)
Мой SQL ржавый, но Advantage Database, кажется, поддерживает DATEADD. Так... эээ... как-то так?
UPDATE mytable
SET field = DATEADD(Year, 100, field)
FROM mytable
WHERE field < '19100101'