Diskuze: MSSQL řazení podle datumu
V předchozím kvízu, Online test znalostí SQL a databází, jsme si ověřili nabyté zkušenosti z kurzu.
Zobrazeno 3 zpráv z 3.
V předchozím kvízu, Online test znalostí SQL a databází, jsme si ověřili nabyté zkušenosti z kurzu.
1. google?
google = mssql get by date sub 30 days
DATEADD(day,-30,date)
google = DATEADD mssql examples
DATEADD (datepart , number , date )
DATEADD(millisecond,1,@datetime2)
WHERE StartDate BETWEEN @StartDate AND DATEADD(DAY, @Units, @StartDate)
WHERE dtDateLogged > dateadd(dd,-30,CAST(GETDATE() AS DATE))
WHERE ss.DATE > DATEADD("day",-30, ss.date)
2. kdyz pracujes s cisly a sloupci, vzdycky je lepsi mit na jedne strane
znamenka konstantu a na druhe sloupec
123 < sloupec
123 < sloupec - 456 -- tohle je spatne, protoze musi kazdy sloupec
prepocitavat
date() < sloupec - 30 dni
date() - 30 dni < sloupec -- tohle je o moc rychlejsi, protoze si vlevo
spocita konstantu
3. kdyz pracujes s tadumem, tak by sloupec mel mit typ DATETIME. Mas?
4. A tohle je cele spatne, divne. Zkus poslat nejaky funkcnejsi sql prikaz, treba jen cislo < datum. Fakt ti to nepise chyby v sql prikazu a projde ti to? Co se mi na tom nezda?
select datumfr, datumto FROM Datum where GetDate() < DateAdd(d,-30,DateTo)
-- * Jestlize mas v databazi sloupce datumfr, datumto, pak lze predpokladat,
-- ze tam jine nemas. Nebo tam mas take dalsi sloupec, DateTo?
-- * d = day, -30 je -30 dni, to je ok, ale pouzival bych text day a ne d. Pro lepsi orientaci
5. "jsou větší jak aktuální datum ale nejsou víc jak 30 dní dopředu
od aktuálního datumu."
Chces zobrazit chystane udalosti od ted, max 30 dni dopredu? To mi nedava moc
smysl. Kazdopadne tam musis mit dve podminky.
aktualni_datum < datum_sloupec < aktualni_datum + 30
aktualni_datum < datum_sloupec && datum_sloupec < aktualni_datum + 30
Cili, ja si myslim, ze by ten prikaz mel vypadat asi nejak takto:
SELECT
DateFrom,
DateTo
FROM
Datum
WHERE
GetDate() < DateTo AND DateTo < DateAdd(day, 30, DateTo)
-- GetDate() < DateTo AND DateTo < DateAdd("day", 30, DateTo) nebo takto
-- (s MS sql nepracuji, tak se v zapise neorientuji, takze to ber spis jako takove orientacni reseni)
Změn podmínku na:
SELECT datumfr, datumto FROM Datum WHERE datumto > GetDate() AND datumto <= DateAdd(d,30,GetDate())
Těch 30 dní musíš přičítat k aktuálnímu datu (takže getdate uvnitř dateadd), a to pak porovnávat s hodnotami v tabulce. A datum větší než dnes zapíšeš další podmínkou, a obě podmínky spojíš pomocí AND.
Zobrazeno 3 zpráv z 3.