Tablas de fechas y cálculos calendáricos

Las preguntas aquí sobre SO frecuentemente giran en torno a cálculos que involucran fechas en SQL. Es particularmente relevante al crear informes que necesitan aislar datos (eventos o transacciones) en períodos, tal vez resumirlos de alguna manera y luego presentarlos de una manera inteligible. Otro caso habitual es cuando necesita pronosticar o avanzar en el tiempo de alguna manera, por ejemplo, calculando plazos futuros o monitoreando el cumplimiento, o incluso simplemente evaluando si una consulta hará lo que debería en fechas futuras.

Incluso los períodos de tiempo que se pueden expresar directamente, como "los últimos 2 meses completos desde el momento en que se ejecuta la consulta", pueden volverse extremadamente complejos de calcular como una sola expresión en una consulta y, si se abordan ingenuamente, implicarán código eso está mal factorizado, es difícil de generalizar y modificar y es difícil de verificar. O desordenado, quebradizo y disfuncional.

La base de las soluciones más robustas es el uso de una "tabla de fechas". Pero esto no es (necesariamente) solo una lista de fechas, sino que también contiene una variedad de hechos y atributos sobre cada fecha. Todos los paquetes de bases de datos incluyen un conjunto de funciones de fecha estándar que extraen varios atributos de una fecha, como el día del mes, pero están lejos de ser exhaustivos.

Entonces, con una respuesta a seguir en un momento, la pregunta que voy a hacer es "¿Cómo creamos una tabla de fechas básica y manipulamos esto en un calendario simple?"?

Respuestas a la pregunta(1)

Su respuesta a la pregunta