Como comparar hora com mysql

Para os usuários finais , não é incomum para solicitar uma comparação de dois pontos do tempo em SQL Oracle. O processo pode tornar-se complexa quando a necessidade de comparar o valor de vários intervalos de datas com SQL Oracle. Existem vários métodos para comparar intervalos de datas no Oracle com cada um tendo um impacto diferente sobre o desempenho do banco de dados . Há uma quantidade significativa de tempo de execução para converter e testar cada data na tabela linha multimilionário . Isto terá sub- segundo tempo de resposta. Métodos de comparação Data normalmente fazem parte da arquitetura do Oracle SQL discussões , a fim de garantir a estrutura de memória do banco de dados é mais otimizado para as consultas esperados sobre os dados. Instruções
1

Use o comando " TO_CHAR " explicitamente com seu próprio formato de data. Por exemplo , selecione TO_CHAR (b, 'AAAA /MM /DD ') . A utilização geral do comando " TO_CHAR " é: " ( , ' ')" onde a seqüência de formato é uma opção que pode ser formado de 40 maneiras. Algumas das opções mais comuns utilizados são: mês

MM numérico (por exemplo, 09) MON Nome do mês abreviado (por exemplo , a SEP ) MÊS Nome completo do mês (por exemplo , maio) Dia DD do mês (por exemplo , 08) DY nome abreviado do dia (por exemplo, SAT) HH Hora do dia (1-12) HH24 Hora do dia ( 0-23 ) Minuto MI ( 0-59 ) SS Segundo ( 0-59 )
2

Selecione o modificador de matemática para usar na consulta. As opções disponíveis para usar são: .

SUM, MINUS e GROUP
3

Escolha a operação de consulta SQL para realizar entre as opções disponíveis de conjuntos de modificadores e de dados. Um exemplo de soma de vendas de uma empresa ao longo de um período de tempo é : sum ( jun2004.sales ) - sum ( jun2005.sales ) fromtransaction_table jun2004 , transaction_table jun2005wherejun2004.trans_year = 2004andjun2004.trans_month = 6andjun2004.trans_year = 2005andjun2004.trans_month = 6; < br >
4

Optest a consulta para o tempo ea eficiência dos recursos , executando a consulta. Se o tempo de resposta atenda às suas necessidades , implementar a consulta no banco de dados de produção por salvá-lo em disco.

Según lo sugerido por algunos, al usar DATE(timestamp) está aplicando la manipulación a la columna y, por lo tanto, no puede confiar en el orden del índice.

Sin embargo, usar BETWEEN solo sería confiable si incluyes los milisegundos. En el ejemplo de marca de tiempo BETWEEN '2012-05-05 00:00:00' AND '2012-05-05 23:59:59' excluye registros con una marca de tiempo entre 2012-05-05 23:59:59.001 y 2012-05-05 23:59:59.999. Sin embargo, incluso este método tiene algunos problemas, debido a la precisión de los tipos de datos. Ocasionalmente se redondean 999 milisegundos.

Lo mejor que puedes hacer es:

SELECT * FROM table WHERE date>='2012-05-05' AND date<'2012-05-06'

O BigQuery é compatível com as funções DATETIME a seguir.

Todas as saídas são formatadas automaticamente de acordo com o ISO 8601, separando a data e a hora com um T.

CURRENT_DATETIME([time_zone])

Descrição

Retorna o horário atual como um objeto DATETIME. Os parênteses são opcionais quando chamados sem argumentos.

Esta função aceita um parâmetro time_zone opcional. Para informações sobre como especificar um fuso horário, consulte Definições de fuso horário.

Tipo de dados retornados

DATETIME

Exemplo

SELECT CURRENT_DATETIME() as now; +----------------------------+ | now | +----------------------------+ | 2016-05-19T10:38:47.046465 | +----------------------------+

Quando uma coluna chamada current_datetime está presente, o nome da coluna e a chamada de função sem parênteses são ambíguos. Para garantir a chamada da função, adicione parênteses. Para garantir o nome da coluna, qualifique-o com a variável de intervalo dele. Por exemplo, a consulta a seguir selecionará a função na coluna now e a coluna da tabela na coluna current_datetime.

WITH t AS (SELECT 'column value' AS `current_datetime`) SELECT current_datetime() as now, t.current_datetime FROM t; +----------------------------+------------------+ | now | current_datetime | +----------------------------+------------------+ | 2016-05-19T10:38:47.046465 | column value | +----------------------------+------------------+ 1. DATETIME(year, month, day, hour, minute, second) 2. DATETIME(date_expression[, time_expression]) 3. DATETIME(timestamp_expression [, time_zone])

Descrição

  1. Cria um objeto DATETIME usando valores INT64 que representam o ano, mês, dia, hora, minuto e segundo.
  2. Cria um objeto DATETIME usando um objeto DATE e um objeto opcional TIME.
  3. Cria um objeto DATETIME usando um objeto TIMESTAMP. Aceita um parâmetro opcional para especificar um fuso horário. Se nenhum fuso horário for especificado, será usado o padrão UTC.

Tipo de dados retornados

DATETIME

Exemplo

SELECT DATETIME(2008, 12, 25, 05, 30, 00) as datetime_ymdhms, DATETIME(TIMESTAMP "2008-12-25 05:30:00+00", "America/Los_Angeles") as datetime_tstz; +---------------------+---------------------+ | datetime_ymdhms | datetime_tstz | +---------------------+---------------------+ | 2008-12-25T05:30:00 | 2008-12-24T21:30:00 | +---------------------+---------------------+ EXTRACT(part FROM datetime_expression)

Descrição

Retorna um valor que corresponde ao part especificado de um datetime_expression fornecido.

Os valores part permitidos são:

  • MICROSECOND
  • MILLISECOND
  • SECOND
  • MINUTE
  • HOUR
  • DAYOFWEEK: retorna valores no intervalo [1,7] com domingo como primeiro dia da semana.
  • DAY
  • DAYOFYEAR
  • WEEK: retorna o número da semana da data no intervalo [0, 53]. As semanas começam no domingo. Os dias anteriores ao primeiro domingo do ano estão na semana 0.
  • WEEK(<WEEKDAY>): retorna o número da semana de datetime_expression no intervalo [0, 53]. As semanas começam em WEEKDAY. datetimes antes da primeira WEEKDAY do ano são na semana zero. Os valores válidos para WEEKDAY são SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY e SATURDAY.
  • ISOWEEK: retorna o número da semana ISO 8601 de datetime_expression. As ISOWEEKs começam na segunda-feira. Os valores de retorno estão no intervalo [1, 53]. O primeiro ISOWEEK de cada ano ISO começa na segunda-feira anterior à primeira quinta-feira do ano do calendário gregoriano.
  • MONTH
  • QUARTER
  • YEAR
  • ISOYEAR: retorna o ano da numeração da semana ISO 8601, que é o ano do calendário gregoriano que contém a quinta-feira da semana à qual date_expression pertence.
  • DATE
  • TIME

Os valores retornados truncam períodos menores de tempo. Por exemplo, ao extrair segundos, EXTRACT trunca os valores de milissegundos e microssegundos.

Tipo de dados retornados

INT64, exceto nos seguintes casos:

  • Se part for DATE, retornará um objeto DATE.
  • Se part for TIME, retornará um objeto TIME.

Exemplos

No exemplo a seguir, EXTRACT retorna um valor correspondente à parte de hora de HOUR.

SELECT EXTRACT(HOUR FROM DATETIME(2008, 12, 25, 15, 30, 00)) as hour; +------------------+ | hour | +------------------+ | 15 | +------------------+

No exemplo a seguir, EXTRACT retorna valores correspondentes a diferentes partes da hora de uma coluna de datas e horas.

WITH Datetimes AS ( SELECT DATETIME '2005-01-03 12:34:56' AS datetime UNION ALL SELECT DATETIME '2007-12-31' UNION ALL SELECT DATETIME '2009-01-01' UNION ALL SELECT DATETIME '2009-12-31' UNION ALL SELECT DATETIME '2017-01-02' UNION ALL SELECT DATETIME '2017-05-26' ) SELECT datetime, EXTRACT(ISOYEAR FROM datetime) AS isoyear, EXTRACT(ISOWEEK FROM datetime) AS isoweek, EXTRACT(YEAR FROM datetime) AS year, EXTRACT(WEEK FROM datetime) AS week FROM Datetimes ORDER BY datetime; +---------------------+---------+---------+------+------+ | datetime | isoyear | isoweek | year | week | +---------------------+---------+---------+------+------+ | 2005-01-03T12:34:56 | 2005 | 1 | 2005 | 1 | | 2007-12-31T00:00:00 | 2008 | 1 | 2007 | 52 | | 2009-01-01T00:00:00 | 2009 | 1 | 2009 | 0 | | 2009-12-31T00:00:00 | 2009 | 53 | 2009 | 52 | | 2017-01-02T00:00:00 | 2017 | 1 | 2017 | 1 | | 2017-05-26T00:00:00 | 2017 | 21 | 2017 | 21 | +---------------------+---------+---------+------+------+

No exemplo a seguir, datetime_expression cai em um domingo. EXTRACT calcula a primeira coluna usando semanas que começam no domingo e calcula a segunda coluna usando semanas que começam na segunda-feira.

WITH table AS (SELECT DATETIME(TIMESTAMP "2017-11-05 00:00:00+00", "UTC") AS datetime) SELECT datetime, EXTRACT(WEEK(SUNDAY) FROM datetime) AS week_sunday, EXTRACT(WEEK(MONDAY) FROM datetime) AS week_monday FROM table; +---------------------+-------------+---------------+ | datetime | week_sunday | week_monday | +---------------------+-------------+---------------+ | 2017-11-05T00:00:00 | 45 | 44 | +---------------------+-------------+---------------+ DATETIME_ADD(datetime_expression, INTERVAL int64_expression part)

Descrição

Adiciona unidades int64_expression de part ao objeto DATETIME.

DATETIME_ADD aceita os seguintes valores para part:

  • MICROSECOND
  • MILLISECOND
  • SECOND
  • MINUTE
  • HOUR
  • DAY
  • WEEK. Equivalente a 7 DAYs.
  • MONTH
  • QUARTER
  • YEAR

Será necessário um tratamento especial para as partes MONTH, QUARTER e YEAR quando a data for o último dia do mês ou estiver perto dele. Se o mês resultante tiver menos dias do que DATETIME original, então o dia resultante será o último dia do novo mês.

Tipo de dados retornados

DATETIME

Exemplo

SELECT DATETIME "2008-12-25 15:30:00" as original_date, DATETIME_ADD(DATETIME "2008-12-25 15:30:00", INTERVAL 10 MINUTE) as later; +-----------------------------+------------------------+ | original_date | later | +-----------------------------+------------------------+ | 2008-12-25T15:30:00 | 2008-12-25T15:40:00 | +-----------------------------+------------------------+ DATETIME_SUB(datetime_expression, INTERVAL int64_expression part)

Descrição

Subtrai unidades int64_expression de part do DATETIME.

DATETIME_SUB aceita os seguintes valores para part:

  • MICROSECOND
  • MILLISECOND
  • SECOND
  • MINUTE
  • HOUR
  • DAY
  • WEEK. Equivalente a 7 DAYs.
  • MONTH
  • QUARTER
  • YEAR

Será necessário um tratamento especial para as partes MONTH, QUARTER e YEAR quando a data for o último dia do mês ou estiver perto dele. Se o mês resultante tiver menos dias do que o DATETIME original, o dia resultante será o último dia do novo mês.

Tipo de dados retornados

DATETIME

Exemplo

SELECT DATETIME "2008-12-25 15:30:00" as original_date, DATETIME_SUB(DATETIME "2008-12-25 15:30:00", INTERVAL 10 MINUTE) as earlier; +-----------------------------+------------------------+ | original_date | earlier | +-----------------------------+------------------------+ | 2008-12-25T15:30:00 | 2008-12-25T15:20:00 | +-----------------------------+------------------------+ DATETIME_DIFF(datetime_expression_a, datetime_expression_b, part)

Descrição

Retorna o número de intervalos part inteiros especificados entre dois objetos DATETIME (datetime_expression_a - datetime_expression_b). Se o primeiro DATETIME for anterior ao segundo, a saída será negativa. Lança um erro se o cálculo estoura o tipo de resultado, como se a diferença em microssegundos entre os dois objetos DATETIME estourasse um valor INT64.

DATETIME_DIFF aceita os seguintes valores para part:

  • MICROSECOND
  • MILLISECOND
  • SECOND
  • MINUTE
  • HOUR
  • DAY
  • WEEK: esta parte da data começa no domingo.
  • WEEK(<WEEKDAY>): esta parte da data começa em WEEKDAY. Os valores válidos para WEEKDAY são SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY e SATURDAY.
  • ISOWEEK: usa limites da semana ISO 8601. As semanas ISO começam na segunda-feira.
  • MONTH, exceto quando os dois primeiros argumentos são objetos TIMESTAMP.
  • QUARTER
  • YEAR
  • ISOYEAR: usa o limite de ano de numeração da semana ISO 8601. O limite do ano ISO é a segunda-feira da primeira semana que contém a quinta-feira pertencente ao ano do calendário gregoriano correspondente.

Tipo de dados retornados

INT64

Exemplo

SELECT DATETIME "2010-07-07 10:20:00" as first_datetime, DATETIME "2008-12-25 15:30:00" as second_datetime, DATETIME_DIFF(DATETIME "2010-07-07 10:20:00", DATETIME "2008-12-25 15:30:00", DAY) as difference; +----------------------------+------------------------+------------------------+ | first_datetime | second_datetime | difference | +----------------------------+------------------------+------------------------+ | 2010-07-07T10:20:00 | 2008-12-25T15:30:00 | 559 | +----------------------------+------------------------+------------------------+ SELECT DATETIME_DIFF(DATETIME '2017-10-15 00:00:00', DATETIME '2017-10-14 00:00:00', DAY) as days_diff, DATETIME_DIFF(DATETIME '2017-10-15 00:00:00', DATETIME '2017-10-14 00:00:00', WEEK) as weeks_diff; +-----------+------------+ | days_diff | weeks_diff | +-----------+------------+ | 1 | 1 | +-----------+------------+

O exemplo acima mostra o resultado de DATETIME_DIFF para dois DATETIMEs que estão separados por 24 horas. DATETIME_DIFF com a parte WEEK retorna 1 porque DATETIME_DIFF conta o número de limites das partes nesse intervalo de DATETIMEs. Cada WEEK começa no domingo, então há um limite de parte entre sábado, 2017-10-14 00:00:00 e domingo, 2017-10-15 00:00:00.

No exemplo a seguir, mostraremos o resultado de DATETIME_DIFF para duas datas em anos diferentes. DATETIME_DIFF com a parte da data YEAR retorna 3 porque conta o número de limites do ano do calendário gregoriano entre as duas DATETIMEs. DATETIME_DIFF com a parte da data ISOYEAR retorna 2 porque a segunda DATETIME pertence ao ano ISO 2015. A primeira quinta-feira do ano calendário de 2015 foi 2015-01-01, então o ano ISO 2015 começa na segunda-feira anterior, 2014-12-29.

SELECT DATETIME_DIFF('2017-12-30 00:00:00', '2014-12-30 00:00:00', YEAR) AS year_diff, DATETIME_DIFF('2017-12-30 00:00:00', '2014-12-30 00:00:00', ISOYEAR) AS isoyear_diff; +-----------+--------------+ | year_diff | isoyear_diff | +-----------+--------------+ | 3 | 2 | +-----------+--------------+

O exemplo a seguir mostra o resultado de DATETIME_DIFF para dois dias consecutivos. A primeira data cai em uma segunda-feira e a segunda data cai em um domingo. DATETIME_DIFF com a parte da data WEEK retorna 0 porque esta parte do tempo usa semanas que começam no domingo. DATETIME_DIFF com a parte da data WEEK(MONDAY) retorna 1. DATETIME_DIFF com a parte da data ISOWEEK também retorna 1 porque as semanas ISO começam na segunda-feira.

SELECT DATETIME_DIFF('2017-12-18', '2017-12-17', WEEK) AS week_diff, DATETIME_DIFF('2017-12-18', '2017-12-17', WEEK(MONDAY)) AS week_weekday_diff, DATETIME_DIFF('2017-12-18', '2017-12-17', ISOWEEK) AS isoweek_diff; +-----------+-------------------+--------------+ | week_diff | week_weekday_diff | isoweek_diff | +-----------+-------------------+--------------+ | 0 | 1 | 1 | +-----------+-------------------+--------------+ DATETIME_TRUNC(datetime_expression, part)

Descrição

Trunca um objeto DATETIME para a granularidade de part.

DATETIME_TRUNC aceita os seguintes valores para part:

  • MICROSECOND
  • MILLISECOND
  • SECOND
  • MINUTE
  • HOUR
  • DAY
  • WEEK
  • WEEK(<WEEKDAY>): trunca datetime_expression no limite da semana anterior, em que as semanas começam em WEEKDAY. Os valores válidos para WEEKDAY são SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY e SATURDAY.
  • ISOWEEK: trunca datetime_expression no limite da semana ISO 8601 anterior. ISOWEEKs começam na segunda-feira. A primeira ISOWEEK de cada ano ISO contém a primeira quinta-feira do ano do calendário gregoriano correspondente. Qualquer date_expression anterior a esta vai truncar na segunda-feira anterior.
  • MONTH
  • QUARTER
  • YEAR
  • ISOYEAR: trunca datetime_expression no limite do ano de numeração da semana ISO 8601 anterior. O limite do ano ISO é a segunda-feira da primeira semana que contém a quinta-feira pertencente ao ano do calendário gregoriano correspondente.

Tipo de dados retornados

DATETIME

Exemplos

SELECT DATETIME "2008-12-25 15:30:00" as original, DATETIME_TRUNC(DATETIME "2008-12-25 15:30:00", DAY) as truncated; +----------------------------+------------------------+ | original | truncated | +----------------------------+------------------------+ | 2008-12-25T15:30:00 | 2008-12-25T00:00:00 | +----------------------------+------------------------+

No exemplo a seguir, o DATETIME original cai em um domingo. Como part é WEEK(MONDAY), DATE_TRUNC retorna o DATETIME da segunda-feira anterior.

SELECT datetime AS original, DATETIME_TRUNC(datetime, WEEK(MONDAY)) AS truncated FROM (SELECT DATETIME(TIMESTAMP "2017-11-05 00:00:00+00", "UTC") AS datetime); +---------------------+---------------------+ | original | truncated | +---------------------+---------------------+ | 2017-11-05T00:00:00 | 2017-10-30T00:00:00 | +---------------------+---------------------+

No exemplo a seguir, o datetime_expression original está no ano letivo gregoriano de 2015. No entanto, DATETIME_TRUNC com a parte da data ISOYEAR trunca a datetime_expression no início do ano ISO, não no ano do calendário gregoriano. A primeira quinta-feira do ano-calendário de 2015 foi 2015-01-01, então o ano ISO 2015 começa na segunda-feira anterior, 2014-12-29. Portanto, o limite do ano ISO anterior a datetime_expression 2015-06-15 00:00:00 é 2014-12-29.

SELECT DATETIME_TRUNC('2015-06-15 00:00:00', ISOYEAR) AS isoyear_boundary, EXTRACT(ISOYEAR FROM DATETIME '2015-06-15 00:00:00') AS isoyear_number; +---------------------+----------------+ | isoyear_boundary | isoyear_number | +---------------------+----------------+ | 2014-12-29T00:00:00 | 2015 | +---------------------+----------------+ FORMAT_DATETIME(format_string, datetime_expression)

Descrição

Formata um objeto DATETIME de acordo com o format_string especificado. Consulte Elementos de formatos compatíveis de DATETIME para ver uma lista de elementos de formato aceitos por essa função.

Tipo de dados retornados

STRING

Exemplos

SELECT FORMAT_DATETIME("%c", DATETIME "2008-12-25 15:30:00") AS formatted; +--------------------------+ | formatted | +--------------------------+ | Thu Dec 25 15:30:00 2008 | +--------------------------+ SELECT FORMAT_DATETIME("%b-%d-%Y", DATETIME "2008-12-25 15:30:00") AS formatted; +-------------+ | formatted | +-------------+ | Dec-25-2008 | +-------------+ SELECT FORMAT_DATETIME("%b %Y", DATETIME "2008-12-25 15:30:00") AS formatted; +-------------+ | formatted | +-------------+ | Dec 2008 | +-------------+

LAST_DAY

LAST_DAY(datetime_expression[, date_part])

Descrição

Retorna o último dia de uma expressão do tipo datetime que contém a data. Ele é normalmente usado para retornar o último dia do mês.

Também é possível especificar a parte da data para a qual o último dia é retornado. Se este parâmetro não for usado, o valor padrão será MONTH. LAST_DAY aceita os seguintes valores para date_part:

  • YEAR
  • QUARTER
  • MONTH
  • WEEK. Equivalente a 7 DAYs.
  • WEEK(<WEEKDAY>). <WEEKDAY> representa o dia da semana. Os valores válidos são SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY e SATURDAY.
  • ISOWEEK. Usa limites da semana ISO 8601. As semanas ISO começam na segunda-feira.
  • ISOYEAR. Usa o limite de ano de numeração da semana ISO 8601. O limite do ano ISO é a segunda-feira da primeira semana que contém a quinta-feira pertencente ao ano do calendário gregoriano correspondente.

Tipo de dados retornados

DATE

Exemplo

Ambos retornam o último dia do mês:

SELECT LAST_DAY(DATETIME '2008-11-25', MONTH) AS last_day +------------+ | last_day | +------------+ | 2008-11-30 | +------------+ SELECT LAST_DAY(DATETIME '2008-11-25') AS last_day +------------+ | last_day | +------------+ | 2008-11-30 | +------------+

Retorna o último dia do ano:

SELECT LAST_DAY(DATETIME '2008-11-25 15:30:00', YEAR) AS last_day +------------+ | last_day | +------------+ | 2008-12-31 | +------------+

Retorna o último dia da semana de uma semana que começa no domingo:

SELECT LAST_DAY(DATETIME '2008-11-10 15:30:00', WEEK(SUNDAY)) AS last_day +------------+ | last_day | +------------+ | 2008-11-15 | +------------+

Retorna o último dia da semana de uma semana que começa na segunda-feira:

SELECT LAST_DAY(DATETIME '2008-11-10 15:30:00', WEEK(MONDAY)) AS last_day +------------+ | last_day | +------------+ | 2008-11-16 | +------------+ PARSE_DATETIME(format_string, datetime_string)

Descrição

Converte uma representação de string de um datetime em um objeto DATETIME.

format_string contém os elementos de formato que definem como datetime_string é formatado. Cada elemento em datetime_string precisa ter um elemento correspondente em format_string. O local de cada elemento em format_string precisa corresponder à localização de cada elemento em datetime_string.

-- This works because elements on both sides match. SELECT PARSE_DATETIME("%a %b %e %I:%M:%S %Y", "Thu Dec 25 07:30:00 2008") -- This doesn't work because the year element is in different locations. SELECT PARSE_DATETIME("%a %b %e %Y %I:%M:%S", "Thu Dec 25 07:30:00 2008") -- This doesn't work because one of the year elements is missing. SELECT PARSE_DATETIME("%a %b %e %I:%M:%S", "Thu Dec 25 07:30:00 2008") -- This works because %c can find all matching elements in datetime_string. SELECT PARSE_DATETIME("%c", "Thu Dec 25 07:30:00 2008")

A string de formato é totalmente compatível com a maioria dos elementos de formato, exceto %a, %A, %g, %G, %j, %P, %u, %U, %V, %w e %W.

PARSE_DATETIME analisa string de acordo com as seguintes regras:

  • Campos não especificados. Qualquer campo não especificado é inicializado em 1970-01-01 00:00:00.0. Por exemplo, se o ano não for especificado, o padrão será 1970.
  • Não diferencia maiúsculas de minúsculas. Os nomes, como Monday e February, diferenciam maiúsculas de minúsculas.
  • Espaço em branco. Um ou mais espaços em branco consecutivos na string de formato correspondem a zero ou mais espaços em branco consecutivos na string DATETIME. Espaços em branco à esquerda e à direita na string DATETIME sempre são permitidos, mesmo que não estejam na string de formato.
  • Precedência de formato. Quando dois ou mais elementos de formato têm informações de sobreposição, o último geralmente modifica os anteriores. Por exemplo, %F e %Y afetam o ano, de modo que o elemento anterior modifica o último. Consulte as descrições de %s, %C e %y em elementos de formato compatíveis para DATETIME.
  • Divergência de formato. %p pode ser usado com am, AM, pm e PM.

Tipo de dados retornados

DATETIME

Exemplos

Nos exemplos a seguir, analisamos um literal STRING como DATETIME.

SELECT PARSE_DATETIME('%Y-%m-%d %H:%M:%S', '1998-10-18 13:45:55') AS datetime; +---------------------+ | datetime | +---------------------+ | 1998-10-18T13:45:55 | +---------------------+ SELECT PARSE_DATETIME('%m/%d/%Y %I:%M:%S %p', '8/30/2018 2:23:38 pm') AS datetime +---------------------+ | datetime | +---------------------+ | 2018-08-30T14:23:38 | +---------------------+

O exemplo a seguir analisa um literal STRING que contém uma data em um formato de linguagem natural como DATETIME.

SELECT PARSE_DATETIME('%A, %B %e, %Y','Wednesday, December 19, 2018') AS datetime; +---------------------+ | datetime | +---------------------+ | 2018-12-19T00:00:00 | +---------------------+