Sim, você não entendeu errado, estou dedicando este artigo ás boas práticas da utilização (e não utilização) da função GETDATE.
Neste artigo, tratarei de três práticas que considero importantes quando requer a utilização desta função, mas se alguém quiser comentar sobre outras práticas ou soluções que considere melhores, fique a vontade.
A primeira dica esta relacionada à divergência da data do servidor/cliente da aplicação em comparação ao servidor do banco de dados, pois é comum aparecer problemas em regras de negócios que envolvem a utilização da função GETDATE() e outras funções com finalidades semelhantes pela aplicação (ex.: VB.NET/C# – System.DateTime.Now()) quando a data/hora dos servidores/clientes estão diferentes (horário de verão que o diga). Desta forma, procure criar políticas para manter as datas/horas dos servidores sincronizadas, e utilizar somente a data/hora de um dos servidores (normalmente o servidor de banco de dados) nas regras de negócio.
Outra dica é referente ao conflito de fuso horário (ou timezone), pois quando você possui servidores em dois ou mais lugares distantes no mundo, a função GETDATE() pode gerar um pouco de dor de cabeça. Assim, utilizar a função SYSDATETIMEOFFSET ao invés de GETDATE, e o tipo DATETIMEOFFSET ao invés de DATETIME, permitirá solucionar estes conflitos e também dará ‘transparência’ em relação aos fusos horários nas consultas.
A função GETUTCDATE também pode ser útil para fusos horários distintos, mas não oferece a mesma transparência em relação ás datas entre os diversos fusos, por utilizar o horário UTC.
Para ‘conversões’ entre os fusos horários, utilize a função SWITCHOFFSET.
A terceira dica é referente ao conflito com os valores obtidos pela função GETDATE() em um mesmo script. Sim, isso existe! Ou estava pensando que o valor da função GETDATE() é obtido só uma vez durante todos os comandos de um script, veja o exemplo:
A fim de solucionar estas divergências, opte pela utilização de variáveis para identificar o valor da função GETDATE() durante os comandos de um script, exemplo:
Espero que tenham gostado destas dicas.
Ainda tenho outras dicas a respeito da precisão das datas/horas, mas as deixo para uma próxima oportunidade.