sql >> Databasteknik >  >> RDS >> MariaDB

Hur man lägger till AM/PM till ett tid- eller datumtidsvärde i MariaDB

MariaDB innehåller många funktioner som låter dig returnera värden för tid och datum i en mängd olika format.

Två funktioner låter dig formatera tidsdelen med en 12-timmarsklocka, med AM/PM-beteckningen DATE_FORMAT() och TIME_FORMAT() .

Det finns många formatspecifikationer som kan användas med dessa funktioner, men bara ett par som returnerar AM/PM-beteckningen.

%r Formatspecifikation

%r formatspecifikationen används för att formatera tiden i 12-timmarsformat, följt av AM/PM-beteckningen.

Exempel:

SELECT DATE_FORMAT('2030-03-10 18:10:37', '%r');

Resultat:

+------------------------------------------+
| DATE_FORMAT('2030-03-10 18:10:37', '%r') |
+------------------------------------------+
| 06:10:37 PM                              |
+------------------------------------------+

Den resulterande tiden visas som om den hade formaterats med följande formatsträng:'%I:%i:%S %p' .

Uppenbarligen, om det returnerar AM eller PM beror på den faktiska tiden. Tider före 12:00:00 returnera AM och gånger efter det returnerar PM .

Här är vad som händer om vi ändrar tiden före 12:00:00 :

SELECT DATE_FORMAT('2030-03-10 06:10:37', '%r');

Resultat:

+------------------------------------------+
| DATE_FORMAT('2030-03-10 06:10:37', '%r') |
+------------------------------------------+
| 06:10:37 AM                              |
+------------------------------------------+

Båda DATE_FORMAT() och TIME_FORMAT() acceptera %r formatspecifikator, så vi kan använda samma formatspecifikator med TIME_FORMAT() funktion:

SELECT TIME_FORMAT('06:10:37', '%r');

Resultat:

+-------------------------------+
| TIME_FORMAT('06:10:37', '%r') |
+-------------------------------+
| 06:10:37 AM                   |
+-------------------------------+

TIME_FORMAT() accepterar tidsvärden såväl som datetime-värden, medan DATE_FORMAT() accepterar endast datum- och datetime-värden. Men TIME_FORMAT() accepterar endast formatspecifikationer för timmar minuter och sekunder. Ser som %r returnerar timmar, minuter och sekunder, detta accepteras också.

%p Formatspecifikation

%p formatspecificator är en mer specifik formatspecificator som endast används för att representera AM/PM-designatorn. Det används normalt tillsammans med andra formatspecifikationer för att returnera tiden i ett anpassat format.

Som nämnts, %r formatspecificeraren formaterar tiden som om den hade formaterats med följande formatsträng:'%I:%i:%S %p' .

Låt oss använda den strängen uttryckligen:

SELECT TIME_FORMAT('18:10:37', '%I:%i:%S %p');

Resultat:

+----------------------------------------+
| TIME_FORMAT('18:10:37', '%I:%i:%S %p') |
+----------------------------------------+
| 06:10:37 PM                            |
+----------------------------------------+

Så vi får samma resultat som när vi använder %r formatspecifikator.

En fördel med att använda denna metod är dock att vi kan konstruera resultatet på vårt eget sätt.

Till exempel:

SELECT TIME_FORMAT('18:10:37', '%l:%i %p');

Resultat:

+-------------------------------------+
| TIME_FORMAT('18:10:37', '%l:%i %p') |
+-------------------------------------+
| 6:10 PM                             |
+-------------------------------------+

Här använde vi %l för att returnera timdelen utan inledande nolla. Vi har också utelämnat sekunderdelen av tiden.

Se MariaDB Format Strings för en fullständig lista över formatspecifikationer som kan användas med dessa funktioner.


  1. Viktiga saker att övervaka i PostgreSQL - Analysera din arbetsbelastning

  2. Hur hittar man tredje eller nᵗʰ högsta lön från lönetabellen?

  3. SQL Server 2008- Få tabellbegränsningar

  4. 3 sätt att returnera rader som innehåller alfanumeriska tecken i SQL Server