Změna kalendářních dat pomocí funkcí a operátorů v Accessu

Tento článek se vztahuje buď na soubor databáze Microsoft Access (.mdb), nebo na soubor databáze Microsoft Access (.accdb) a na soubor projektu (.adp) aplikace Microsoft Access.

Střední: Vyžaduje základní dovednosti v makrech, kódování a interoperabilitě.

Souhrn

Tento článek popisuje funkce a operátory, které jsou k dispozici v aplikaci Microsoft Office Access 2007, Microsoft Office Access 2003 a Microsoft Access 2002. Pomocí funkcí a operátorů můžete pomocí ukázkových dotazů provést změnu datového typu Datum a čas. Ukázkové dotazy, které můžete použít ke změně hodnot kalendářních dat, používají tabulky v Northwind.mdb ukázkové databázi.

Poznámka

Ukázková databáze Northwind pro Access 2007 nepoužívá stejná pole jako předchozí verze ukázkové databáze Northwind. V tabulce Employees nejsou žádná pole HireDate a BirthDate, která je součástí ukázkové databáze Northwind pro Access 2007. Pole EmployeeID bylo přejmenováno NA ID a pole Jméno bylo přejmenováno na Jméno.

Další informace

Access poskytuje operátory a funkce pro ověření nebo změnu polí s datovým typem Datum a čas. Následující příklady dotazů používají manipulace s datem, výpočetní funkce a relační operátory, které jsou k dispozici v Accessu.

Společnost Microsoft poskytuje ukázky programování pouze pro ilustraci, bez žádné záruky výslovně uvedené nebo odvozené, včetně, bez omezení, odvozených záruk vztahujících se k obchodovatelnosti nebo vhodnosti pro určitý účel. Tento článek předpokládá, že uživatel je obeznámen s programovacím jazykem, který je předmětem ukázky, a s nástroji použitými pro vytvoření a ladění skriptu. Technici podpory společnosti Microsoft mohou pomoci vysvětlit funkce konkrétního postupu. Nebudou však upravovat tyto příklady tak, aby poskytovaly přidanou funkcionalitu nebo sestavovaly postupy, které splňují vaše specifické požadavky.

Funkce Date(), Now() a Format()

SELECT Date(), Now();

Funkce Date() vrátí aktuální datum ve formátu krátkého data. Funkce Now() vrátí aktuální datum s časem.

SELECT Format(Now(); "dd mmmm rrrr");

Pomocí funkce Format() s hodnotami kalendářního data můžete určit formát data, který chcete použít pro dané datum. Tento ukázkový dotaz vrátí aktuální datum ve formátu dlouhého data (1. prosince 2003).

Funkce Day(), Funkce WeekDay(), Month() funkce a Year()

SELECT HireDate, Day(HireDate) AS Day,
Weekday(HireDate) AS WeekDay,
Month(HireDate) AS Month, Year(HireDate) AS Year 
FROM Employees;

Z tabulky Zaměstnanci vrátí tento dotaz pro každého zaměstnance datum přijetí, den přijetí, den v týdnu přijetí, měsíc přijetí a rok přijetí. Všimněte si, že funkce WeekDay() vrátí číselnou hodnotu, která označuje den v týdnu.

Funkce DatePart()

SELECT *  FROM Employees
WHERE DatePart("yyyy", BirthDate) < 1960;

Z tabulky Zaměstnanci tento dotaz vrátí všechny zaměstnance, kteří se narodili před rokem 1960. Funkci DatePart() je možné použít k extrahování části zadaného data, jako je den, měsíc nebo rok.

Funkce DateDiff()

SELECT EmployeeID, FirstName, BirthDate,
DateDiff("yyyy", BirthDate, Date()) AS Age
FROM Employees;

Z tabulky Zaměstnanci tento dotaz vrátí ID zaměstnance, jméno, datum narození a věk každého zaměstnance. Funkce DateDiff() vrátí rozdíl nebo časová prodleva mezi dvěma zadanými hodnotami data (z hlediska dne, měsíce, roku nebo časových jednotek, jako jsou hodiny, minuty a sekundy).

Funkce DateAdd()

SELECT EmployeeID, FirstName, HireDate,
DateAdd("yyyy", 10, HireDate)
FROM Employees;

Z tabulky Zaměstnanci tento dotaz vrátí ID zaměstnance, jméno, datum přijetí a datum, kdy zaměstnanec dokončí 10 let služby ve společnosti. Funkce DateAdd() zvýší datum o zadaný počet časových jednotek, jako je den, měsíc nebo rok, a pak vrátí výslednou hodnotu.

Číselnou hodnotu můžete přidat přímo k hodnotě kalendářního data. Uděláte to tak, abyste hodnotu data navýšil o den, jak je znázorněno v následujícím příkladu:

SELECT Date() + 1 ;

Tento dotaz zvýší aktuální datum o jeden den a vrátí výslednou hodnotu data.

Funkce DateValue()

SELECT DateValue("20 Nov 2003") AS ValidDate;

Funkce DateValue() ověřuje, jestli je vstupní řetězec platným datem. Pokud je vstupní řetězec rozpoznán jako platné datum, vrátí se datum v krátkém formátu. Pokud vstupní řetězec není rozpoznán jako platné datum, vrátí se příkaz "Neshoda datového typu ve výrazu kritéria". Funkce DateValue() rozpoznává různé formáty kalendářních dat, například mm dd rrrr, dd mm rrrr, dd mmm yyyy a dd mmm yyyy hh:mm:ss long date.

Funkce DateSerial()

SELECT DateSerial( 2003, 03, 1-1);

Funkce DateSerial() vrátí hodnotu data pro zadané vstupní parametry roku, měsíce a dne. Vstupní parametry můžou být výrazy, které zahrnují aritmetické operace. Funkce DateSerial() vyhodnocuje výrazy ve vstupních parametrech předtím, než vrátí výslednou hodnotu data.

Tento ukázkový dotaz vrátí poslední den v měsíci únor pro rok 2003. Poslední vstupní parametr pro den s hodnotou 1 se sníží o 1. Výsledkem je, že parametr month je vyhodnocen jako 2.

Použití relačních operátorů s hodnotami kalendářních dat

K porovnání hodnot kalendářních dat ve výrazech a v dotazech můžete použít následující relační operátory:

  • < (menší než)
  • > (větší než)
  • <= (menší než nebo rovno)
  • >= (větší než nebo rovno)
  • <> (nerovná se)
SELECT * FROM Employees
WHERE HireDate >= DateValue(" 10/01/1993")
AND HireDate <= DateValue("12/31/1993");

Tento dotaz používá >operátor = porovnání a <operátor = k ověření, jestli datum přijetí zaměstnance spadá do rozsahu dvou zadaných dat. Tento dotaz načte záznamy všech zaměstnanců, kteří byli přijati v posledním čtvrtletí kalendářního roku 1993.

SELECT * FROM Employees
WHERE HireDate <> Date();

Tento dotaz používá operátor porovnání nerovnosti k načtení záznamů všech zaměstnanců, kteří mají datum přijetí, které se nerovná aktuálnímu datu.

Funkce WeekdayName()

SELECT WeekdayName(1; False; 1) AS FirstWeekDayName;

Funkce WeekdayName() vrátí řetězec, který označuje den v týdnu, jak je uvedeno v prvním parametru. Vrácený řetězec dne v týdnu závisí na třetím parametru. Tento parametr nastaví první den v týdnu. Druhý parametr je nastavený na Hodnotu False, který určuje, že název dne v týdnu nesmí být zkrácen.

Tento ukázkový dotaz vrátí hodnotu Neděle jako první den v týdnu.

Funkce MonthName()

SELECT MonthName(1);

Funkce MonthName() vrátí řetězec, který označuje název měsíce pro zadané číslo měsíce od 1 do 12. Vstupním parametrem může být také výraz, jako v následujícím dotazu:

SELECT MonthName( DatePart("m"; Date()) );

Tento dotaz vrátí název aktuálního měsíce.

Odkazy

Další informace získáte v následujících článcích znalostní báze Microsoft Knowledge Base:

  • 290178 Vytvoření dotazu s parametry pro vyhodnocení složitých kritérií v Aplikaci Microsoft Access
  • 290190 Jak v Aplikaci Microsoft Access vytvořit dvě funkce pro výpočet věku v měsících a letech