Cuando ingresas tu consulta en el Editor SQL o creas un cálculo, utilizas la Sintaxis Presto SQL. Para ajustar o realizar cálculos sobre valores de fecha o marca de tiempo, puede que te resulten útiles estas funciones comunes.
Nota: Las variables de tiempo de ejecución en las cadenas, como las utilizadas para las transformaciones de fecha y hora, utilizan strftime de Python en lugar de Presto SQL.
AT TIME ZONE
Para convertir la zona horaria de una marca de tiempo, utiliza el operador AT TIME ZONE. Por ejemplo:
SELECT cast(timestamp '2020-10-31 01:00 UTC' as VARCHAR) 2020-10-31 01:00:00.000 UTC SELECT cast(timestamp '2020-10-31 01:00 UTC' AT TIME ZONE 'America/Los_Angeles' as VARCHAR) 2020-10-30 18:00:00.000 America/Los_Angeles
Consejo: En las mayoría de las zonas, puedes usar America/Los_Angeles para la zona horaria del Pacífico, America/Denver for Mountain, America/Chicago para la zona horaria central y America/New_York para la zona horaria oriental.
CURRENT_DATE
Para devolver la fecha en la que se ejecuta la consulta, utiliza la función CURRENT_DATE. Por ejemplo, SELECT CURRENT_DATE().
FECHA
Para convertir un valor en un valor de fecha, utiliza la función DATE como DATE(valor).
DATE_ADD
Para añadir un valor de unidad de intervalo a una fecha o marca de tiempo, utiliza la función DATE_ADD como DATE_ADD(unidad, valor, marca de tiempo). Para unidad, DATE_ADD admite:
milisegundosegundominutohoradíasemanamestrimestreaño
Por ejemplo, SELECT DATE_ADD('día', 10, "2020-06-15") devuelve 2020-06-25.
Nota: Para analizar una cadena con formato IS08601 como valor de fecha, utiliza la función FROM_ISO8601_DATE, como FROM_ISO8601_DATE('2020-06-15').
DATE_DIFF
Para devolver la diferencia de dos valores de fecha o marca de tiempo, utiliza la función DATE_DIFF como DATE_DIFF(unidad, marca de tiempo 1, marca de tiempo 2). Para la unidad, DATE_DIFF admite los mismos valores que DATE_ADD. Por ejemplo, SELECT DATE_DIFF('día', "2020-06-15", "2020-06-25") devuelve 10.
Nota: DATE_DIFF solo se aplica a objetos de Fecha y es posible que tengas que asignar otros objetos para que esta función se ejecute correctamente.
Nota: Para analizar una cadena con formato IS08601 como valor de fecha, utiliza la función FROM_ISO8601_DATE, como FROM_ISO8601_DATE('2020-06-15').
DATE_FORMAT
Para devolver un valor de fecha o marca de tiempo en un formato establecido, utiliza la función DATE_FORMAT como DATE_FORMAT(marca de tiempo, formato). Para el formato, DATE_FORMAT admite una combinación de estos valores:
| Formato | Descripción |
|---|---|
%a |
Nombre abreviado del día de la semana, desde Dom hasta Sáb |
%b |
Nombre abreviado del mes, de Ene a Dic |
%c |
Valor numérico del mes, de 1 a 12 |
%D
|
Numeric day of the month with its suffix, such as 1st,
2nd, 3rd...
|
%d |
Día numérico del mes como número de dos dígitos, de 01 a 31 |
%e |
Día numérico del mes, de 1 a 31 |
%f |
Milisegundo, de 000000 a 999000 para imprimir; de 0 a 999999999 para analizar |
%H |
Hora del reloj de 24 horas como número de dos dígitos, de 00 a 23 |
%h o %I |
Hora del reloj de 12 horas como número de dos dígitos, de 00 a 12 |
%i |
Minuto, de 00 a 59 |
%j |
Día del año como número de tres cifras, de 000 a 366 |
%k |
Hora del reloj de 24 horas, de 0 a 23 |
%l |
Hora del reloj de 12 horas, de 0 a 12 |
%M |
Nombre del mes, de Enero a Diciembre |
%m |
Valor numérico del mes como número de dos cifras, de 01 a 12 |
%p |
AM o PM del reloj de 12 horas |
%r |
Hora en reloj de 12 horas, como hh:mm:ss seguido de AM o PM |
%s o %S |
Segundo, de 00 a 59 |
%T |
Hora en el reloj de 24 horas, como hh:mm:ss |
%U
|
Week of the year, from 00 to 53,
where Sunday is the first day of the week
|
%u
|
Week of the year, from 00 to 53,
where Monday is the first day of the week
|
%V
|
Week of the year, from 01 to 53,
where Sunday is the first day of the week; used with %X
|
%v |
Semana del año, desde 01 hasta 53, donde el lunes es el primer día de la semana; se utiliza con %x |
%W |
Nombre del día de la semana, deDomingo a Sábado |
%w
|
Day of the week, from 0 to 6,
where Sunday is the first day of the week
|
%X
|
Year for when Sunday is the first day of the week; used with %V
|
%x |
Años para cuando el lunes es el primer día de la semana; se utiliza con %v |
%Y |
Año, como número de cuatro cifras |
%y |
Año, como número de dos cifras Nota: Al analizar, |
%% |
El carácter literal % |
Nota: Para devolver el día de la semana como un número, desde 1 hasta 7, utiliza la función DAY_OF_WEEK.
DAY
Para obtener el día del mes (como un número del 1 al 31) a partir de una fecha o marca de tiempo, utiliza la función DAY como DAY(date_value). Por ejemplo, SELECT DAY("2020-06-15") devuelve 15.
DAY_OF_WEEK
Para devolver el día de la semana (como un número desde 1 para el lunes hasta 7 para el domingo) a partir de una fecha o marca de tiempo, utiliza la función DAY_OF_WEEK como DAY_OF_WEEK(valor_fecha).
EOMONTH
Para devolver el número del último día del mes a partir de una fecha o marca de tiempo, utiliza la función EOMONTH, como FIN.MES(valor_fecha, valor_número_mes).
FROM_ISO8601_DATE
Para analizar una cadena con formato ISO8601 como fecha, utiliza la función FROM_ISO8601_DATE, como FROM_ISO8601_DATE(valor_fecha).
INTERVAL
Para sumar o restar valores de unidad de intervalo para una fecha o una marca de tiempo, utiliza la función INTERVAL con un operador + o -, como +/- INTERVAL valor unidad. Para unidad, INTERVAL admite los mismos valores que DATE_ADD. Por ejemplo:
-
DATE '2020-08-08' + INTERVAL '2' díadevuelve 2020-08-10. -
TIMESTAMP '2020-08-08 01:00' + INTERVAL '29' horadevuelve 2020-08-09 06:00:00.000. -
INTERVAL '2' día + INTERVAL '3' horadevuelve 2 03:00:00.000. -
TIMESTAMP '2020-10-31 01:00' - INTERVAL '1' mesdevuelve 2020-09-30 01:00:00.000.
MES
Para obtener el mes (como un número del 1 al 12) a partir de una fecha o una marca de tiempo, utiliza la función MONTH como MONTH(valor_fecha). Por ejemplo, SELECT MONTH("2020-06-15") devuelve 6.
AHORA
Para devolver la fecha y hora en que se ejecuta la consulta, utiliza la función NOW. Por ejemplo, SELECT NOW().
QUARTER
Para obtener el trimestre del año (como un número del 1 al 4) a partir de una fecha o una marca de tiempo, utiliza la función QUARTER como QUARTER(valor_fecha). Por ejemplo, SELECT QUARTER("2020-06-15") devuelve 2.
AÑO
Para devolver el año (como un número de 1000 a 9990) a partir de una fecha o marca de tiempo, utiliza la función YEAR como YEAR(valor_fecha). Por ejemplo, SELECT YEAR("2020-06-15") devuelve 2020.