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().
DATE
Para convertir un valor en un valor de fecha, utiliza la función DATE como DATE(valor).
DATE_ADD
Para agregar 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, de 01 a 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ño 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 dígitos 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.
MONTH
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.
NOW
Para devolver la marca de tiempo 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.
YEAR
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.