Antes de postar um item de conexão sobre a falta de documentação sobre isso, alguém confirmará que não estou simplesmente perdendo algo aqui?
Na página de documentos, onde format
está listado como uma função de string:
"Todas as funções de string internas são determinísticas." - Funções de string (Transact-SQL)
Também não há menção de format
ser não determinista em páginas relacionadas:
No entanto, ao tentar criar uma coluna computada persistente:
create table t (date_col date);
insert into t values (getdate());
alter table t add date_formatted_01 as format(date_col,'YYYY') persisted;
Retorna o seguinte erro:
A coluna computada 'date_formatted_01' na tabela 't' não pode ser mantida porque a coluna não é determinística.
A documentação informa que
Se o argumento de cultura não for fornecido, o idioma da sessão atual será usado.
mas adicionar um argumento de cultura não muda as coisas
Isso também falha
alter table t add date_formatted_02 as format(date_col, 'd', 'en-US' ) persisted
demonstração do rextester: http://rextester.com/ZMS22966
demonstração do dbfiddle.uk: http://dbfiddle.uk/?rdbms=sqlserver_next&fiddle=7fc57d1916e901cb561b551af144aed6