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
.
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.