Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Exemplos de STR_TO_DATE() – MySQL


O STR_TO_DATE() do MySQL A função permite que você crie um valor de data a partir de várias partes de data.

Ao usar esta função, você fornece uma string das várias partes da data e um segundo argumento que especifica o formato em que a data é fornecida.


Sintaxe


A sintaxe fica assim:
STR_TO_DATE(str,formato)

Onde str é a string que contém as partes da data e format é a string de formato (determina como o str argumento está formatado).

Exemplo 1 – Uso básico


Aqui está um exemplo para demonstrar.
SELECT STR_TO_DATE('31,12,1999','%d,%m,%Y');

Resultado:
+--------------------------------------+| STR_TO_DATE('31,12,1999','%d,%m,%Y') |+-------------------------------------- -----------+| 31/12/1999 |+-------------------------------------------------+

Exemplo 2 – Ordem da String de Formato


A string de formato deve corresponder aos valores fornecidos na string de data. Por exemplo, você não pode fazer o seguinte:
SELECT STR_TO_DATE('31,12,1999','%m,%d,%Y');

Resultado:
+--------------------------------------+| STR_TO_DATE('31,12,1999','%m,%d,%Y') |+-------------------------------------- -----------+| NULL |+-------------------------------------------------+

A razão pela qual isso não funcionou é porque estamos tentando forçar o mês a ter um valor de 31, mas há apenas 12 meses em um ano. Portanto, isso resultaria em um valor de data inválido.

Portanto, você precisará ter cuidado ao usar esta função, especialmente quando o valor do dia for 12 ou menos, caso contrário, você pode acabar com os valores do mês e do dia sendo trocados sem perceber.

Por exemplo, assim:
SELECT STR_TO_DATE('07,12,1999','%d,%m,%Y'), STR_TO_DATE('07,12,1999','%m,%d,%Y'); 
Resultado:
+---------------------------------------+------- -------------------------------+| STR_TO_DATE('07,12,1999','%d,%m,%Y') | STR_TO_DATE('07,12,1999','%m,%d,%Y') |+-------------------------------------- -----------+-------------------------------------- +| 1999-12-07 | 12/07/1999 |+-------------------------------------------------+---- ----------------------------------+

Nesse caso, não obtemos um valor NULL como no exemplo anterior, porque tanto 07 e 12 pode ser um dia ou um mês.

Exemplo 3 – Correspondência da string de formato


Mesmo que a string de formato esteja na ordem correta, ela também deve corresponder ao formato das partes de data fornecidas no primeiro argumento.

Então, por exemplo, você não pode fazer isso:
SELECT STR_TO_DATE('31 Dez, 1999','%d,%m,%Y');

Resultado:
+----------------------------------------+| STR_TO_DATE('31 Dez, 1999','%d,%m,%Y') |+---------------------------- ------------+| NULL |+---------------------------------------------------+

Nesse caso, precisaríamos fazer algo assim:
SELECT STR_TO_DATE('31 Dez, 1999','%d %M, %Y');

Resultado:
+-----------------------------------------+| STR_TO_DATE('31 Dez, 1999','%d %M, %Y') |+----------------------------- ------------+| 1999-12-31 |+----------------------------------------------------+ 

Exemplo 4 – Usando a função GET_FORMAT()


Você também pode passar o GET_FORMAT() função como o segundo argumento.

Aqui está um exemplo.
SELECT STR_TO_DATE('12.07.1999', GET_FORMAT(DATA, 'EUA'));

Resultado:
+---------------------------------------------- ------+| STR_TO_DATE('12.07.1999', GET_FORMAT(DATA, 'EUA')) |+------------------------------- ----------+| 1999-12-07 |+------------------------------------------------------ ---------+

Exemplo 5 – Valores de data e hora


Você também pode usar essa função para retornar um valor de hora ou data e hora.

Aqui está um exemplo usando um valor de data e hora.
SELECT STR_TO_DATE('31/12/1999 09:30:17','%d/%m/%Y %H:%i:%s');

Resultado:
+---------------------------------------------- ----------+| STR_TO_DATE('31/12/1999 09:30:17','%d/%m/%Y %H:%i:%s') |+---------- ------------------------------------------+| 1999-12-31 09:30:17 |+------------------------------------------------- ------------------+

Especificadores de string de formato


Os especificadores a seguir podem ser usados ​​na string de formato. Além disso, você também pode usar strings literais na string de formato.
Especificador Descrição
%a Nome abreviado do dia da semana (Sun ..Sat )
%b Nome do mês abreviado (Jan ..Dec )
%c Mês, numérico (0 ..12 )
%D Dia do mês com sufixo em inglês (0th , 1st , 2nd , 3rd , …)
%d Dia do mês, numérico (00 ..31 )
%e Dia do mês, numérico (0 ..31 )
%f Microssegundos (000000 ..999999 )
%H Hora (00 ..23 )
%h Hora (01 ..12 )
%I Hora (01 ..12 )
%i Minutos, numérico (00 ..59 )
%j Dia do ano (001 ..366 )
%k Hora (0 ..23 )
%l Hora (1 ..12 )
%M Nome do mês (January ..December )
%m Mês, numérico (00 ..12 )
%p AM ou PM
%r Hora, 12 horas (hh:mm:ss seguido por AM ou PM )
%S Segundos (00 ..59 )
%s Segundos (00 ..59 )
%T Horário, 24 horas (hh:mm:ss )
%U Semana (00 ..53 ), onde domingo é o primeiro dia da semana; WEEK() modo 0
%u Semana (00 ..53 ), onde segunda-feira é o primeiro dia da semana; WEEK() modo 1
%V Semana (01 ..53 ), onde domingo é o primeiro dia da semana; WEEK() modo 2; usado com %X
%v Semana (01 ..53 ), onde segunda-feira é o primeiro dia da semana; WEEK() modo 3; usado com %x
%W Nome do dia da semana (Sunday ..Saturday )
%w Dia da semana (0 =Domingo..6 =Sábado)
%X Ano da semana em que domingo é o primeiro dia da semana, numérico, quatro dígitos; usado com %V
%x Ano para a semana, onde segunda-feira é o primeiro dia da semana, numérico, quatro dígitos; usado com %v
%Y Ano, numérico, quatro dígitos
%y Ano, numérico (dois dígitos)
%% Um literal % personagem
%x x , para qualquer “x ” não listado acima