sql >> Databasteknik >  >> RDS >> Mysql

TO_SECONDS() Exempel – MySQL

I MySQL, TO_SECONDS() funktion returnerar antalet sekunder sedan året 0.

Denna funktion ska inte förväxlas med TIME_TO_SECONDS() funktion, som returnerar antalet sekunder i ett givet tidsvärde som angetts som ett argument.

Syntax

Syntaxen ser ut så här:

TO_SECONDS(expr)

Där expr är ett datum eller datetime-värde (som ska jämföras med år 0).

Exempel 1 – Använda ett "datum"-argument

Här är ett exempel med ett datumargument.

SELECT TO_SECONDS('2021-09-21');

Resultat:

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

Exempel 2 – Använda ett "datetime"-argument

Här är ett exempel som använder ett datetime-argument.

SELECT TO_SECONDS('2021-09-21 10:30:25');

Resultat:

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

Exempel 3 – Använda det aktuella datumet

I det här exemplet skickar jag CURDATE() fungera som argument för att använda det aktuella datumet.

SELECT TO_SECONDS(CURDATE()) AS 'Result';

Resultat:

+-------------+
| Result      |
+-------------+
| 63697968000 |
+-------------+

Exempel 4 – Använda aktuellt datum och tid

I det här exemplet skickar jag NOW() fungerar som argument för att använda aktuellt datum och tid.

SELECT TO_SECONDS(NOW()) AS 'Result';

Resultat:

+-------------+
| Result      |
+-------------+
| 63698002698 |
+-------------+

Tvåsiffriga år

MySQL har särskilda regler för hantering av datum med tvåsiffrigt årtal. Tvåsiffriga årtal är tvetydiga eftersom århundradet är okänt. I princip gäller följande regler:

  • Årsvärden i intervallet 00-69 konverteras till 2000-2069 .
  • Årsvärden i intervallet 70-99 konverteras till 1970-1999 .

För en fullständig förklaring, se MySQL-dokumentationen om hur MySQL hanterar tvåsiffriga årtal.

Här är ett exempel att visa:

SELECT 
  TO_SECONDS('69-10-07') AS '69 (2069)',
  TO_SECONDS('70-10-07') AS '70 (1970)';

Resultat:

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

Förkortade datum

Du kan också använda förkortade datum. Här är ett exempel med tidigare datumvärden i förkortad form.

SELECT 
  TO_SECONDS('691007') AS '69 (2069)',
  TO_SECONDS('701007') AS '70 (1970)';

Resultat:

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

Tidigare datum

MySQL-dokumentationen varnar för att TO_SECONDS() funktion:

är inte avsedd att användas med värden som föregår tillkomsten av den gregorianska kalendern (1582), eftersom den inte tar hänsyn till de dagar som gick förlorade när kalendern ändrades. För datum före 1582 (och möjligen ett senare år på andra platser) är resultaten från denna funktion inte tillförlitliga.


  1. Oracle current_timestamp till sekunder konvertering

  2. Rådgivande lås eller NOWAIT för att slippa vänta på låsta rader?

  3. SqlConnection SqlCommand SqlDataReader ID Disposable

  4. Eliminera dubbletter av värden baserat på endast en kolumn i tabellen