как я могу добавить 100 лет к дате в базе данных Advantage - PullRequest
2 голосов
/ 27 сентября 2010

У меня есть куча записей в моей базе данных Advantage, которая закончилась 1909 годом, а не 2009 годом. Как можно выполнить оператор обновления, который добавит 100 лет к каждой из этих дат?(Преимущество говорит мне, что нет функции "str ()", и она не позволит мне объединить месяц (mydate) с "/".

Ответы [ 2 ]

4 голосов
/ 28 сентября 2010

Вы можете использовать следующее

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,но тогда нужно заново добавить время)

0 голосов
/ 27 сентября 2010

Мой SQL ржавый, но база данных Advantage поддерживает DATEADD . Так ... э-э ... как-то так?

UPDATE mytable
SET field = DATEADD(Year, 100, field)
FROM mytable
WHERE field < '19100101'
...