BigQuery admite las siguientes funciones TIME
.
CURRENT_TIME
CURRENT_TIME([timezone])
Descripción
Muestra la hora actual como un objeto TIME
. Los paréntesis son opcionales cuando
se los llama sin argumentos.
Esta función admite un parámetro timezone
opcional.
Consulta las Definiciones de la zona horaria para obtener información sobre cómo especificar una zona horaria.
Tipo de datos mostrados
TIME
Ejemplo
SELECT CURRENT_TIME() as now;
+----------------------------+
| now |
+----------------------------+
| 15:31:38.776361 |
+----------------------------+
Cuando una columna llamada current_time
está presente, el nombre de la columna y la llamada a la
función sin paréntesis son ambiguos. Para garantizar la llamada a función, agrega
paréntesis a fin de garantizar el nombre de la columna y califícala con su
variable de rango. Por ejemplo, la siguiente consulta seleccionará la función en la columna now
y la columna de la tabla en la columna current_time
.
WITH t AS (SELECT 'column value' AS `current_time`)
SELECT current_time() as now, t.current_time FROM t;
+-----------------+--------------+
| now | current_time |
+-----------------+--------------+
| 15:31:38.776361 | column value |
+-----------------+--------------+
TIME
1. TIME(hour, minute, second)
2. TIME(timestamp, [timezone])
3. TIME(datetime)
Descripción
- Construye un objeto
TIME
mediante valoresINT64
que representan la hora, los minutos y los segundos. - Construye un objeto
TIME
mediante un objetoTIMESTAMP
. Admite un parámetro opcional para especificar una zona horaria. Si no se especifica una zona horaria, se usa la predeterminada, UTC. - Construye un objeto
TIME
mediante un objetoDATETIME
.
Tipo de datos mostrados
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 |
+----------+
EXTRACT
EXTRACT(part FROM time_expression)
Descripción
Muestra un valor que corresponde a la part
especificada de una time_expression
proporcionada.
Los valores part
permitidos son los siguientes:
MICROSECOND
MILLISECOND
SECOND
MINUTE
HOUR
Los valores mostrados truncan los períodos de orden inferior. Por ejemplo, cuando se extraen segundos, EXTRACT
trunca los valores de milisegundos y microsegundos.
Tipo de datos mostrados
INT64
Ejemplo
En el siguiente ejemplo, EXTRACT
muestra un valor que corresponde a la parte de tiempo HOUR
.
SELECT EXTRACT(HOUR FROM TIME "15:30:00") as hour;
+------------------+
| hour |
+------------------+
| 15 |
+------------------+
TIME_ADD
TIME_ADD(time_expression, INTERVAL int64_expression part)
Descripción
Agrega unidades int64_expression
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 mostrados
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 int64_expression part)
Descripción
Resta unidades int64_expression
de part
al 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 mostrados
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_a, time_expression_b, part)
Descripción
Muestra la cantidad de intervalos part
completos especificados entre dos objetos TIME
(time_expression_a
y time_expression_b
). Si el primer TIME
es anterior al segundo, el resultado es negativo. Genera un error si el cálculo desborda el tipo de resultado, por ejemplo, si la diferencia en microsegundos entre los dos objetos TIME
desbordara un valor INT64
.
TIME_DIFF
admite los siguientes valores para part
:
MICROSECOND
MILLISECOND
SECOND
MINUTE
HOUR
Tipo de datos mostrados
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 part
.
TIME_TRUNC
admite los siguientes valores para part
:
MICROSECOND
MILLISECOND
SECOND
MINUTE
HOUR
Tipo de datos mostrados
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 Da formato a un objeto TIME
según 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 mostrados
STRING
Ejemplo
SELECT FORMAT_TIME("%R", TIME "15:30:00") as formatted_time;
+----------------+
| formatted_time |
+----------------+
| 15:30 |
+----------------+
PARSE_TIME
PARSE_TIME(format_string, time_string)
Descripción
Convierte una representación de string de tiempo en un objeto TIME
.
format_string
contiene los elementos de formato que definen cómo se da formato a time_string
. Cada elemento en time_string
debe tener un elemento correspondiente en format_string
. La ubicación de cada elemento en format_string
debe coincidir con la ubicación de cada elemento en time_string
.
-- This works because elements on both sides match.
SELECT PARSE_TIME("%I:%M:%S", "07:30:00")
-- This doesn't work because the seconds element is in different locations.
SELECT PARSE_TIME("%S:%I:%M", "07:30:00")
-- This doesn't work because one of the seconds elements is missing.
SELECT PARSE_TIME("%I:%M", "07:30:00")
-- This works because %T can find all matching elements in time_string.
SELECT PARSE_TIME("%T", "07:30:00")
La string de formato admite por completo la mayoría de los elementos de formato, excepto %P
.
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, siseconds
no está especificado, el valor predeterminado es00
, y así sucesivamente. - Espacio en blanco. Uno o más espacios en blanco consecutivos en la string de formato coinciden con cero o más espacios en blanco consecutivos en la string
TIME
. Además, los espacios en blanco iniciales y finales en la stringTIME
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 mostrados
TIME
Ejemplo
SELECT PARSE_TIME("%H", "15") as parsed_time;
+-------------+
| parsed_time |
+-------------+
| 15:00:00 |
+-------------+
SELECT PARSE_TIME('%I:%M:%S %p', '2:23:38 PM') AS parsed_time
+-------------+
| parsed_time |
+-------------+
| 14:23:38 |
+-------------+
Elementos de formato admitidos para TIME
A menos que se indique lo contrario, las funciones TIME
que usan strings de formato admiten los siguientes elementos:
Elemento de formato | Descripción | Ejemplo |
%H | La hora (formato de 24 horas) como número decimal (00-23). | 21 |
%I | La hora (formato de 12 horas) como número decimal (01-12). | 09 |
%k | La hora (formato de 24 horas) como número decimal (0-23); los dígitos individuales están precedidos por un espacio. | 21 |
%l | La hora (formato de 12 horas) como número decimal (1-12); los dígitos individuales están precedidos por un espacio. | 9 |
%M | El minuto como número decimal (00-59) | 47 |
%n | Un carácter de salto de línea. | |
%P | Ya sea a.m. o p.m. | p.m. |
%p | Ya sea A.M. o P.M. | PM |
%R | La hora en el formato %H:%M. | 21:47 |
%r | La hora en el formato de 12 horas con la notación A.M./P.M. | 09:47:00 p.m. |
%S | El segundo como número decimal (00-60) | 00 |
%T | La hora en el formato %H:%M:%S. | 21:47:00 |
%t | Un tabulador | |
%X | La representación de la hora en formato HH:MM:SS | 21:47:00 |
%% | Un solo carácter % | % |
%E#S | Segundos con # dígitos de precisión fraccional. | 00.000 |
%E*S | Segundos con precisión fraccional completa (un literal “*”). | 00 |