Saltar al contenido

Usar Parte de Fecha

Guía

Caso de uso: Necesita un Date tabla con muchas partes de fecha diferentes y columnas de fecha de referencia

Esto se puede desplegar todo dentro de Vinyl. No requiere un Number tabla con 0 - N filas, pero hay otro procedimiento sobre cómo generar exponencialmente números para una tabla como esa, todas con subconsultas de Vinyl unidas.

Si su semana comienza en domingo o lunes depende de la configuración de su base de datos. Existe la opción de tener el global @@DATEFIRST La configuración será lunes o domingo en el nivel de la base de datos.

A continuación se muestra la tabla Date.

Tabla de fechas

Las siguientes son consultas para crear las columnas.

CAST(DateAdd(day, N.Number - {{DíasHistoriales}}, NOW()) AS Date) AS Date DatePart(year, {{Fecha}}) AS Year DatePart(quarter, {{Fecha}}) AS Quarter DatePart(month, {{Fecha}}) AS Month DatePart(week, {{Fecha}}) AS Week DatePart(day, {{Fecha}}) AS Day DatePart(weekday, {{Fecha}}) AS Weekday DateAdd(year, DateDiff(year, 0, {{Fecha}}), 0) AS YearStartDate DateAdd(year, DateDiff(year, 0, {{Fecha}}) + 1, - 1) AS YearEndDate DateAdd(day, -(DatePart(day, {{Fecha}}) - 1), {{Fecha}}) AS MonthStartDate DateAdd(day, -(DatePart(day, DateAdd(mm, 1, {{Fecha}}))), DateAdd(month, 1, {{Fecha}})) AS MonthEndDate

Estos últimos cuatro son para bases de datos con @@DATEFIRST establecido como domingo. Puede verificar si su día de la semana está configurado en domingo viendo si el valor del día de la semana arriba (DatePart(weekday, {{Fecha}}) para un domingo = 1. (Si es = 7 y para un lunes es = 1, es probable que estos tengan que cambiar).

DateAdd(day, -(IIF(DatePart(weekday, {{Fecha}}) = 1, 8, DatePart(weekday, {{Fecha}})) - 2), {{Fecha}}) AS WeekStartDateMonday DateAdd(day, 6, {{WeekStartDateMonday}}) AS WeekEndDateMonday DateAdd(day, -(DatePart(weekday, {{Fecha}}) - 1), {{Fecha}}) AS WeekStartDateSunday DateAdd(day, 6, {{WeekStartDateSunday}}) AS WeekEndDateSunday

A continuación se muestran los resultados dados.

Resultados