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

Exemplos de TO_SECONDS() – MySQL


No MySQL, o TO_SECONDS() A função retorna o número de segundos desde o ano 0.

Esta função não deve ser confundida com o TIME_TO_SECONDS() função, que retorna o número de segundos em um determinado valor de tempo fornecido como argumento.

Sintaxe


A sintaxe fica assim:
TO_SECONDS(expr)

Onde expr é um valor de data ou data/hora (a ser comparado ao ano 0).

Exemplo 1 - Usando um argumento 'data'


Aqui está um exemplo usando um argumento de data.
SELECT TO_SECONDS('2021-09-21');

Resultado:
+--------------------------+
| TO_SECONDS('2021-09-21') |
+--------------------------+
|              63799401600 |
+--------------------------+

Exemplo 2 – Usando um argumento 'datetime'


Aqui está um exemplo usando um argumento datetime.
SELECT TO_SECONDS('2021-09-21 10:30:25');

Resultado:
+-----------------------------------+
| TO_SECONDS('2021-09-21 10:30:25') |
+-----------------------------------+
|                       63799439425 |
+-----------------------------------+

Exemplo 3 – Usando a data atual


Neste exemplo, passo o CURDATE() função como o argumento para usar a data atual.
SELECT TO_SECONDS(CURDATE()) AS 'Result';

Resultado:
+-------------+
| Result      |
+-------------+
| 63697968000 |
+-------------+

Exemplo 4 – Usando a data e hora atuais


Neste exemplo, passo o NOW() função como o argumento para usar a data e hora atuais.
SELECT TO_SECONDS(NOW()) AS 'Result';

Resultado:
+-------------+
| Result      |
+-------------+
| 63698002698 |
+-------------+

Anos de dois dígitos


O MySQL tem regras especiais para lidar com datas com anos de dois dígitos. Anos de dois dígitos são ambíguos porque o século é desconhecido. Basicamente, as seguintes regras se aplicam:
  • Valores do ano no intervalo 00-69 são convertidos para 2000-2069 .
  • Valores de ano no intervalo 70-99 são convertidos para 1970-1999 .

Para uma explicação completa, veja a documentação do MySQL sobre como o MySQL lida com anos de dois dígitos.

Segue um exemplo para demonstrar:
SELECT 
  TO_SECONDS('69-10-07') AS '69 (2069)',
  TO_SECONDS('70-10-07') AS '70 (1970)';

Resultado:
+-------------+-------------+
| 69 (2069)   | 70 (1970)   |
+-------------+-------------+
| 65315548800 | 62191324800 |
+-------------+-------------+

Datas abreviadas


Você também pode usar datas abreviadas. Aqui está um exemplo usando os valores de data anteriores de forma abreviada.
SELECT 
  TO_SECONDS('691007') AS '69 (2069)',
  TO_SECONDS('701007') AS '70 (1970)';

Resultado:
+-------------+-------------+
| 69 (2069)   | 70 (1970)   |
+-------------+-------------+
| 65315548800 | 62191324800 |
+-------------+-------------+

Datas anteriores


A documentação do MySQL avisa que o TO_SECONDS() função:

não se destina ao uso com valores anteriores ao advento do calendário gregoriano (1582), pois não leva em consideração os dias perdidos quando o calendário foi alterado. Para datas anteriores a 1582 (e possivelmente um ano posterior em outras localidades), os resultados dessa função não são confiáveis.