Сохраняйте дату с помощью char (10), поэтому можете сравнивать непосредственно с <,>, = в sybase 15.7 - PullRequest
0 голосов
/ 30 августа 2018

term_date в #report_tmp - это char (10), при использовании <,> он работает как ожидалось, Является ли этот метод сравнения надежным в Sybase?

    declare @last_year_end char(10)

SELECT @last_year_end=convert(varchar,@cyear -1)+'/12'+'/31'


update #report_tmp
set remark = @note1
where term_date != '' and term_date <= @last_year_end

1 Ответ

0 голосов
/ 01 сентября 2018

Я бы лучше написал этот код:

declare @cur_year datetime

SELECT @cur_year = convert(datetime, convert(varchar, @cyear) + '/01'+'/01', 111)

update #report_tmp set remark = @note1 
where term_date != '' and term_date < @cur_year

Здесь вы не полагаетесь на текущие настройки локали при неявном преобразовании varchar в date или datetime (будет работать с обоими). ​​

...