La función DATE devuelve una fecha con formato datetime.
DATE(
year,
month,
day
)
- year: Número representando el año.
- month: Número representando el mes.
- day: Número representando el día.
La función DATE devuelve un valor con formato datetime que representa una fecha.
year
Este argumento puede incluir de uno a cuatro dígitos: Si tiene uno o dos dígitos, se suma a 1900. Así, "Fecha = DATE(10,12,31)" devuelve la fecha del 31 de diciembre de 1910:
Si tiene tres o cuatro dígitos, no se modifica.
Si year es un número real, se redondea al entero más próximo. En el siguiente ejemplo se introduce el valor 1016.7 como primer argumento, redondeándose a 1917:
Si year es mayor que 9999, DATE devuelve un mensaje de error. Si es un valor menor que -1800, DATE también devuelve un mensaje de error:
Sin embargo, si es un valor negativo entre -1800 y 0 (ambos valores incluidos), se suma a 1900. De esta forma, si se introduce como argumento el valor -100, DATE lo interpreta como 1900-100=1800:
month
Si este argumento es un número entero entre 1 y 12 se interpreta como el mes correspondiente (1 representa a enero y 12 a diciembre). Si es un número mayor que 12, se suma al argumento year la parte entera de dividir el valor de month entre 12 y se considera como mes el valor de month módulo 12. Es decir, se resta 12 de month tantas veces como sea posible (hasta que quede un número entre 1 y 12) y cada valor de 12 restado aumenta el valor de year en una unidad. Por ejemplo, si se introduce 2000 como año, 12 como mes y 1 como día, DATE devuelve como fecha el 1 de diciembre de 2000. Pero si se introduce 13 como mes, la fecha devuelta es la correspondiente a un mes más tarde del siguiente año: el 1 de enero de 2001:
Para entender cómo la función DATE gestiona un valor de month cero o negativo, lo más sencillo es partir de un ejemplo como DATE(2000,1,1). Esta función devuelve la fecha del 1 de enero de 2000. Si aumentamos month en uno, es obvio que obtendríamos la fecha correspondiente a un mes más tarde (1 de febrero de 2000). Pues, de forma semejante, si disminuimos month en uno (para dejarlo en cero), también obtenemos la fecha desplazada pero, en este caso, un mes hacia atrás, devolviéndose la fecha del 1 de diciembre de 1999:
De igual manera, si month toma el valor -1, se ajustaría la fecha devuelva un mes más hacia atrás, obteniéndose la fecha del 1 de noviembre de 1999.
Y así sucesivamente.
Si este argumento no es un número entero, se redondea al entero más próximo:
day
Si este argumento es un número entre 1 y el número de días del mes indicado, representa el día del mes. Sin embargo, si el número de día indicado por este argumento supera el número de días del mes especificado, el exceso de días se añade a la fecha resultante. Por ejemplo, si indicamos 1 para el mes (enero, mes de 31 días) y 33 para el día, la fecha devuelta es el 2 de febrero:
DAX calcula automáticamente el número de días de cada mes teniendo en cuenta, por ejemplo, los años bisiestos. De esta forma, para el 29 de febrero de 2015 obtenemos el siguiente resultado:
Mientras que para el 29 de febrero de 2016 obtenemos el siguiente resultado:
El comportamiento de la función cuando el argumento day toma un valor nulo o negativo es semejante al visto para el mes con una pequeña diferencia: day no puede tomar el valor 0 (DATE devuelve un mensaje de error), aunque sí puede tomar valores negativos. En todo caso, para entender el resultado que devolvería la función DATE(2000, 1,-1) es conveniente imaginar que DATE(2000,1,0) devolvería como resultado la fecha del 31 de diciembre de 1999, por lo que DATE(2000,1,-1) devuelve un día menos: el 30 de diciembre de 1999:
Si este argumento no es un número entero, se redondea al entero más próximo: