Funciones de tiempo en SQL estándar

BigQuery admite las siguientes funciones de TIME.

CURRENT_TIME

CURRENT_TIME()

Descripción

Muestra la hora actual como un objeto TIME.

Tipo de datos que se muestran

TIME

Ejemplo

SELECT CURRENT_TIME() as now;

+----------------------------+
| now                        |
+----------------------------+
| 15:31:38.776361            |
+----------------------------+

TIME

1. TIME(hour, minute, second)
2. TIME(timestamp, [timezone])
3. TIME(datetime)

Descripción

  1. Construye un objeto TIME mediante valores INT64 que representan la hora, los minutos y los segundos.
  2. Construye un objeto TIME mediante un objeto TIMESTAMP. Admite un parámetro opcional para especificar una zona horaria. Si no se especifica una zona horaria, se usa la zona horaria predeterminada, UTC.
  3. Construye un objeto TIME mediante un objeto DATETIME.

Tipo de datos que se muestran

TIME

Ejemplo

SELECT
  TIME(15, 30, 00) as time_hms,
  TIME(TIMESTAMP "2008-12-25 15:30:00+08", "America/Los_Angeles") as time_tstz;
+----------+-----------+
| time_hms | time_tstz |
+----------+-----------+
| 15:30:00 | 23:30:00  |
+----------+-----------+
SELECT
  TIME(DATETIME "2008-12-25 15:30:00.000000") AS time_dt;
+----------+
| time_dt  |
+----------+
| 15:30:00 |
+----------+

TIME_ADD

TIME_ADD(time_expression, INTERVAL INT64_expr part)

Descripción

Agrega unidades INT64_expr de part al objeto TIME.

TIME_ADD admite los siguientes valores para part:

  • MICROSECOND
  • MILLISECOND
  • SECOND
  • MINUTE
  • HOUR

Esta función se ajusta automáticamente cuando los valores caen fuera del límite de 00:00:00 a 24:00:00. Por ejemplo, si agregas una hora a la 23:30:00, el valor que se muestra es 00:30:00.

Tipos de datos que se muestran

TIME

Ejemplo

SELECT
  TIME "15:30:00" as original_time,
  TIME_ADD(TIME "15:30:00", INTERVAL 10 MINUTE) as later;

+-----------------------------+------------------------+
| original_time               | later                  |
+-----------------------------+------------------------+
| 15:30:00                    | 15:40:00               |
+-----------------------------+------------------------+

TIME_SUB

TIME_SUB(time_expression, INTERVAL INT_expr part)

Descripción

Resta unidades INT64_expr de part del objeto TIME.

TIME_SUB admite los siguientes valores para part:

  • MICROSECOND
  • MILLISECOND
  • SECOND
  • MINUTE
  • HOUR

Esta función se ajusta automáticamente cuando los valores caen fuera del límite de 00:00:00 a 24:00:00. Por ejemplo, si restas una hora de 00:30:00, el valor que se muestra es 23:30:00.

Tipo de datos que se muestran

TIME

Ejemplo

SELECT
  TIME "15:30:00" as original_date,
  TIME_SUB(TIME "15:30:00", INTERVAL 10 MINUTE) as earlier;

+-----------------------------+------------------------+
| original_date                | earlier                |
+-----------------------------+------------------------+
| 15:30:00                    | 15:20:00               |
+-----------------------------+------------------------+

TIME_DIFF

TIME_DIFF(time_expression, time_expression, part)

Descripción

Muestra el número de intervalos part completos especificados entre dos objetos TIME. Genera un error si el cálculo desborda el tipo de resultado, por ejemplo, si la diferencia en microsegundos entre los dos objetos de tiempo desbordaría un valor INT64.

TIME_DIFF admite los siguientes valores para part:

  • MICROSECOND
  • MILLISECOND
  • SECOND
  • MINUTE
  • HOUR

Tipo de datos que se muestran

INT64

Ejemplo

SELECT
  TIME "15:30:00" as first_time,
  TIME "14:35:00" as second_time,
  TIME_DIFF(TIME "15:30:00", TIME "14:35:00", MINUTE) as difference;

+----------------------------+------------------------+------------------------+
| first_time                 | second_time            | difference             |
+----------------------------+------------------------+------------------------+
| 15:30:00                   | 14:35:00               | 55                     |
+----------------------------+------------------------+------------------------+

TIME_TRUNC

TIME_TRUNC(time_expression, part)

Descripción

Trunca un objeto TIME al nivel de detalle de la part.

TIME_TRUNC admite los siguientes valores para part:

  • MICROSECOND
  • MILLISECOND
  • SECOND
  • MINUTE
  • HOUR

Tipo de datos que se muestran

TIME

Ejemplo

SELECT
  TIME "15:30:00" as original,
  TIME_TRUNC(TIME "15:30:00", HOUR) as truncated;

+----------------------------+------------------------+
| original                   | truncated              |
+----------------------------+------------------------+
| 15:30:00                   | 15:00:00               |
+----------------------------+------------------------+

FORMAT_TIME

FORMAT_TIME(format_string, time_object)

Descripción Formatea un objeto TIME de acuerdo con la format_string especificada. Consulta Elementos de formato admitidos para TIME a fin de obtener una lista de los elementos de formato que admite esta función.

Tipo de datos que se muestran

STRING

Ejemplo

SELECT FORMAT_TIME("%R", TIME "15:30:00") as formatted_time;

+----------------+
| formatted_time |
+----------------+
| 15:30          |
+----------------+

PARSE_TIME

PARSE_TIME(format_string, string)

Descripción

Utiliza format_string y una string para mostrar un objeto TIME. Consulta Elementos de formato admitidos para TIME a fin de obtener una lista de los elementos de formato que admite esta función.

Cuando uses PARSE_TIME, ten en cuenta lo siguiente:

  • Campos sin especificar. Todo campo sin especificar se inicializa desde 00:00:00.0. Por ejemplo, si seconds no se especifica, el valor predeterminado es 00, y así sucesivamente.
  • Espacio en blanco. Uno o más espacios en blanco consecutivos en la string de formato no coinciden con ningún espacio en blanco consecutivo o coinciden con más espacios en blanco consecutivos en la string TIME. Además, los espacios en blanco iniciales y finales en la string TIME siempre están permitidos, incluso si no están en la string de formato.
  • Precedencia del formato. Cuando dos (o más) elementos de formato tienen información superpuesta, el último generalmente anula los anteriores.

Tipo de datos que se muestran

TIME

Ejemplo

SELECT PARSE_TIME("%H", "15") as parsed_time;

+-------------+
| parsed_time |
+-------------+
| 15:00:00    |
+-------------+

Elementos de formato admitidos para TIME

A menos que se indique lo contrario, las funciones de TIME que usan strings de formato admiten los siguientes elementos:

Elemento de formato Descripción
%H La hora (formato de 24 horas) como número decimal (00-23).
%I La hora (formato de 12 horas) como número decimal (01-12).
%j El día del año como número decimal (001-366).
%k La hora (formato de 24 horas) como número decimal (0-23); los dígitos individuales están precedidos por un espacio.
%l La hora (formato de 12 horas) como número decimal (1-12); los dígitos individuales están precedidos por un espacio.
%M El minuto como número decimal (00-59)
%n Un carácter de salto de línea.
%P Ya sea a.m. o p.m.
%p Ya sea A.M. o P.M.
%R La hora en el formato %H:%M.
%r La hora en el formato de 12 horas con la notación A.M./P.M.
%S El segundo como número decimal (00-60)
%T La hora en el formato %H:%M:%S.
%t Un tabulador
%X La representación de la hora en formato HH:MM:SS
%% Un solo carácter %
%E#S Segundos con # dígitos de precisión fraccional.
%E*S Segundos con precisión fraccional completa (un “*” literal).
¿Te sirvió esta página? Envíanos tu opinión:

Enviar comentarios sobre…

¿Necesitas ayuda? Visita nuestra página de asistencia.