Eu tenho um monte de relatórios financeiros, e queremos poder passar a eles duas entradas (ano e trimestre) como variáveis.
Estou fazendo assim, mas não gosto muito:
declare @quarter int,
@year int,
@date date
set @quarter = 4
set @year = 2018
set @date = cast(@year as varchar(4)) + '-01-01'
set @date = dateadd(quarter, @quarter - 1, @date)
print @date
Pergunta Qual é a melhor maneira de reconstruir uma data a partir de entradas inteiras?
resultado desejado:
2018-10-01
Que tal
ou se você ainda estiver usando o SQL 2008:
Deixe-me sugerir que NÃO use um separador de data como '-' ou '/', depende das configurações regionais, use o
YYYYMMDD
formato.db<>fique aqui
Você pode criar uma dimensão de data ou tabela de calendário no SQL Server e consultá-la
Eu evitaria usar strings, mas usaria aritmética de data combinada com uma época zero conhecida (ou mesmo desconhecida!).
Isso evita a comparação de strings até a data, que é confusa, dependente da cultura e cara.