štvrtok, 14 november 2019 10:48 Written by 4012 times
Rate this item
(1 Vote)

MySQL - filtrovanie podľa dátumu a času a formátovanie dátumu a času

Zdravím databázových programátorov pod MySQL.
Dnes si ukážeme zopár malých príkladov, ako filtrovať riadky v tabuľke podľa dátumu a času a zároveň funkčné a užívateľsky prístupné formátovanie dátumu a času do výstupu.

Príklady:

SELECT 
	DATE_FORMAT(ZAPIS, "%d.%m.%Y") AS "Formatovany_zapis 1",		-- dátum s oddelenými číslami bodkou 
	DATE_FORMAT(ZAPIS, "%d %M %Y") AS "Formatovany_zapis 2",   		-- dátum s dlhým menom mesiaca
	DATE_FORMAT(ZAPIS, "%W - %d %M %Y") AS "Formatovany_zapis 3",		-- dátum s vyobrazením mena dňa
	DATE_FORMAT(ZAPIS, "%w - %d %M %Y") AS "Formatovany_zapis 4",		-- dátum s vyobrazením poradia dňa v týždni
	DATE_FORMAT(ZAPIS, "%d.%m.%Y %h:%m:%s") AS "Formatovany_zapis 5",	-- dátum a cas, hodina je formátovaná v 12h formáte	
	DATE_FORMAT(ZAPIS, "%d.%m.%Y %H:%m:%s") AS "Formatovany_zapis 6",	-- dátum a cas, hodina je formátovaná v 24h formáte 		
	DATE_FORMAT(ZAPIS, "%U %d.%m.%Y %H:%m:%s") AS "Formatovany_zapis 7",	-- číslo týždňa + dátum a čas, hodina je formátovaná v 24h formáte
	prod.*
FROM prod 
WHERE 
	DATUM BETWEEN '2019-11-13' AND '2019-11-14' 				-- budú zobrazené riadky, ktoré majú v stĺpci DATUM dátum v intervale 2019-11-13 a 2019-11-14
	--AND ZAPIS BETWEEN '2019-11-14 06:00:00' AND '2019-11-14 06:30:00'	-- budú zobrazené riadky, ktoré majú v stĺpci ZAPIS dátum 2019-11-14 a čas v intervale 06:00:00 a 06:30:00
	--AND ZAPIS BETWEEN '2019-11-14 00:00:00' AND '2019-11-14 23:59:59'	-- budú zobrazené riadky, ktoré majú v stĺpci ZAPIS dátum 2019-11-14
	--AND TIME(ZAPIS) BETWEEN '06:00:00' AND '06:30:00' 			-- budú zobrazené riadky, ktoré majú v stĺpci ZAPIS čas v intervale 06:00:00 a 06:30:00 nezáležiac na dni 
	--AND HOUR(ZAPIS)=21							-- budú zobrazené riadky, ktoré majú v stĺpci ZAPIS hodinu času rovnú 21 nezáležiac na dni 
	--AND EXTRACT(HOUR FROM ZAPIS) BETWEEN 5 AND 6 				-- budú zobrazené riadky, ktoré majú v stĺpci ZAPIS hodinu v intervale 5 a 6
ORDER BY ZAPIS;

 

Zoznam skratiek pre funkcie DATE_FORMAT z dokumentácie:
%a    Abbreviated weekday name (Sun to Sat)
%b    Abbreviated month name (Jan to Dec)
%c    Numeric month name (0 to 12)
%D    Day of the month as a numeric value, followed by suffix (1st, 2nd, 3rd, ...)
%d    Day of the month as a numeric value (01 to 31)
%e    Day of the month as a numeric value (0 to 31)
%f    Microseconds (000000 to 999999)
%H    Hour (00 to 23)
%h    Hour (00 to 12)
%I    Hour (00 to 12)
%i    Minutes (00 to 59)
%j    Day of the year (001 to 366)
%k    Hour (0 to 23)
%l    Hour (1 to 12)
%M    Month name in full (January to December)
%m    Month name as a numeric value (00 to 12)
%p    AM or PM
%r    Time in 12 hour AM or PM format (hh:mm:ss AM/PM)
%S    Seconds (00 to 59)
%s    Seconds (00 to 59)
%T    Time in 24 hour format (hh:mm:ss)
%U    Week where Sunday is the first day of the week (00 to 53)
%u    Week where Monday is the first day of the week (00 to 53)
%V    Week where Sunday is the first day of the week (01 to 53). Used with %X
%v    Week where Monday is the first day of the week (01 to 53). Used with %X
%W    Weekday name in full (Sunday to Saturday)
%w    Day of the week where Sunday=0 and Saturday=6
%X    Year for the week where Sunday is the first day of the week. Used with %V
%x    Year for the week where Monday is the first day of the week. Used with %V
%Y    Year as a numeric, 4-digit value
%y    Year as a numeric, 2-digit value


Dúfam, že tieto zdrojové MySQL kódy pomôžu mnohým programátorom a ušetria vela času pri vymýšlaní a programovaní.
S pozdravom.
Alojz Benďák.

Last modified on štvrtok, 14 november 2019 10:55
Alojz Benďák

Autor je administrátor webu a venuje sa programovaniu takmer 23 rokov.

  • prvý kontakt s počítačmi na strednej škole - PMD 1,2,3, PP06, Atari, Sinclair (programovanie v jazyku: strojový kód, basic a pascal):  2 roky
  • na VŠ - jazyky Turbo pascal a Turbo C: 1rok
  • programovanie databázového ekonomického širokoškálneho software v Delphi a C++ Borland (databázy Paradox): 8 rokov v Codex s.r.o. Nitra
  • programovanie webových aplikácií na databázach MySQL a MS SQL server: 1 roky na živnosť (firmy: Hermes Nitra, Schindler v Bratislave)
  • pracoval ako DBA v Homecredit Brno a vo VÚB Bratislava ako vyvojár + optimalizácie v SQL a PL/SQL na Oracle 11g (firma Accenture)
  • programoval programy pre súkromné firmy pre HW na skenovanie povrchov nádrží pre skladovanie tekutých palív (pristroj Leica)
  • momentálne pracuje ako DBA pod Oracle 11g a ako vyvojár vnútropodnikových databázových aplikacií v PHP, SQL, C++, C# a interface v PL/SQL: 11 rokov
  • ďalej programuje s HTML, CSS, Ajax, Javascript, VBA, MS visual C++ a C# malé podporné aplikácie
  • certifikát SQL expert for Oracle 11g   
  • spolupracuje a aktívne učí pre počítačové firmy: Lapis, IVIT v Nitre