Výpis datumu, který není v db – MySQL – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Výpis datumu, který není v db – MySQL – Fórum – Programujte.comVýpis datumu, který není v db – MySQL – Fórum – Programujte.com

 

tomas ch.
~ Anonymní uživatel
1 příspěvek
1. 9. 2012   #1
-
0
-

Dobrý den,
je možné nějak vypsat rozmezí dvou datumů, které nejsou v db? nevím přesně jak můj problém popsat tak uvedu příklad.
mám tabulku datum s polozkamy dat1 a dat2, kde dat1 a dat2 udávají interval od do.
| datum |
_____________________
| dat1 | dat2 |
-------------------------------------
| 2012-01-20 | 2012-01-25 |
-------------------------------------

a já bych chtel select, kterym vyberu dva intervaly datumů, v mesici leden, mimo interval od dat1 do dat2. takze vysledkem chci aby byly dva udaje a to : 2012-01-01 -> 2012-01-19 a druhy udaj : 2012-01-26 -> 2012-01-31
omlouvam se, ale opravdu nevim jak to lepe vysvetlit...

Nahlásit jako SPAM
IP: 217.115.252.–
nergal+1
Návštěvník
1. 9. 2012   #2
-
0
-

 za predopkladu ze dat1<dat2 by mohlo fungovat nieco taketo pripadne to este upravit :)

SELECT IF (dat1 = dat1 - INTERVAL DAYOFMONTH(dat1)-1 DAY,
		null,
		dat1 - INTERVAL DAYOFMONTH(dat1)-1 DAY) as per1_begin,
       IF (dat1 = dat1 - INTERVAL DAYOFMONTH(dat1)-1 DAY,
		null,
		dat1 - INTERVAL 1 DAY) as per1_end,
       IF (dat2 = LAST_DAY(dat2),
		null,
		dat2 + INTERVAL 1 DAY) as per2_begin,
       IF (dat2 = LAST_DAY(dat2),
		null,
		LAST_DAY(dat2)) as per2_end
FROM ...
		

ale radsej by som to riesil na strane aplikacie :)

Nahlásit jako SPAM
IP: 85.135.189.–
viem že neviem čo viem
P
~ Anonymní uživatel
212 příspěvků
9. 10. 2012   #3
-
0
-

S MySQL nedelam, psal a zkousel jsem to na MSSQL, pak jsem to prepsal do syntaxe MySQL. Kdyby to nefungovalo, snad si to uz upravis.

SELECT dat2 AS dat1, ADDDATE(dat1, -1) AS dat2
FROM (
	SELECT d1.dat1, ADDDATE(MAX(d2.dat2), 1) AS dat2
	FROM Datum d1
	LEFT OUTER JOIN Datum d2 ON d2.dat1 < d1.dat1
	GROUP BY d1.dat1
) q
WHERE dat2 IS NOT NULL AND dat1 <> dat2
UNION ALL
SELECT '2012-01-01', ADDDATE(MIN(dat1), -1)
FROM Datum
HAVING MIN(dat1) > '2012-01-01'
UNION ALL
SELECT ADDDATE(MAX(dat2), 1), '2012-01-31'
FROM Datum
HAVING MAX(dat2) < '2012-01-31'
ORDER BY dat1, dat2
Nahlásit jako SPAM
IP: 85.93.116.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 5 hostů

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý