Hlavná stránka · Diskusné Fórum · Pracovné príležitosti · Zoznam

 Main Menu
o Hlavná stránka
o Zoznam tém
o Zoznam
o Odporučte nás
o Užívatelia
o Vaše konto
o Pridaj článok
o Štatistiky
o Top 10

 Reklama


 Developer Zone's
o Internet
o Tools
o Linux
o CGI Zone
o ASP Zone
o ASP.net
o PHP Zone
o CSS Zone
o JavaScript
o MySQL
o WAP / WML
o WML / WMLScript
o XML / XHTML
o Tipy a triky
o Best of web
o WebServers
o WebDesign
o Grafika

 Servis
o Vyhľadávanie
o Fórum
o Workoffice
o Zoznam článkov
o Reklama
o Pridaj článok
o Pridaj novinku

Napíšte nám
Homepage Do favoritov

 LinkExpres
Interval.cz · Pc.sk
Builder.cz · Mobilmania
PCSvet.cz · Asp.cz
Webdnes · Živě.sk
Zoznam.sk · Atlas.sk
Inzine.sk · PHP.sk
Agent.sk · Lupa.cz
Code.box.sk · Root.cz
Pixel32 · Grafika.cz

 forum.developer.sk
o Fórum ::
o Markup languages
o Scriptové jazyky
o CGI
o PHP/MySQL
o Perl
o Grafika
o Webservery
o HTML Editory
o Browsery
o Bookmarx
o ASP
o Vytvor tému ::

 Pracovné príležitosti
o Ponúkate prácu?
o Hľadáte prácu?

 Autori developer.sk
o Martin Nemeček
o Sväťo Straka
o Jany Masaryk
o Jozef Murín

 
Tipy a Triky [ 26. May 2000] - Jany_Masaryk
Dátové funkcie a práca s nimi v ASP stránkach a MS SQLServer
Tento tip vznikol na základe otázok nášho čitateľa: Robím databázu v SQLserver7.0. Chcem používať dátum ako kritérium zobrazovania údajov z tabuľky. Mám stĺpec s menom Datum a do neho zapisujem cez ASP dátum funkciou Date(). Dátum v tomto stĺpci je vo formáte 4.4.2000. Potrebujem napísať ASP, ktoré mi podľa týchto dátumov bude zobrazovat údaje z celej tabuľky.



Problém začína tu : Ja to potrebujem tak, aby mi ukazoval údaje, ktoré su X dni staré, teda všetky od (dnešný dátum - X) väčšie. Keď napíšem do ASP že

	Select * from tab_name where Datum >= Date() - X
	

tak proste mi vyhodí nejakú chybu. Vieš mi please poradiť presnú syntax, že ako to dosiahnem?

Riešenie 1 :

Takže riešení je niekoľko, ale popíšem iba jedno. Predpokladajme, že máme nasledovnú tabuľku News :

Názov stĺpca Typ hodnôt
News_ID int (pričom je tento atribút zároveň primárnym kĺúčom a tiež "identity")
News_Title varchar(50)
News_Date datetime

Z danej tabuľky chceme zobrazovať položky, ktoré sú X dní staré. Doležité je si uvedomiť, že oddelenie logiky funkčnej od logiky databázovej je pomerne podstatná vec, ktorá napríklad umožňuje meniť databázový server bez nutnosti zasahovať do ASP stránok. Upraví sa len databazová časť. To znamená, neodporúča sa "na tvrdo" písať SQL príkaz do ASP stránky. Miesto toho zostavíme uloženú procedúru. Kedže otázka je kladená na SQL Server tu je príklad procedúry uplatnenej na tabulku News :

	Set Dateformat dmy
	CREATE PROCEDURE Xnew
	@days int
	AS
	SELECT News_ID, News_Title, News_Date
	FROM News
	WHERE (DATEDIFF(dd, News_Date, getdate()) <= @days) AND (DATEDIFF(dd, News_Date, getdate()) > -1)
	ORDER BY News_Date DESC
    

pričom procedúru voláme z ASP stránky pomocou príkazu strSQL, kde X je počet dní teda integer číslo :

	strSQL = "EXECUTE Xnew @days=" & X
	

Tým dostaneme správy staré X dní. Prvý príkaz nastaví aký bude dátumový formát v databáze. Parameter sa zostaví pomocou y(year), m(month) a d(day). Zvyšok je klasické zostavenie procedúry. Za zmienku stojí príkaz DATEDIFF. Bližšie v prehľade číslo 2 dole ... Získané výsledku už iba naplníme do Recordsetu a môžeme ich ďaľej použiť.

Problém 2 :
Ešte ďaľšia vec: Neviem, že v akom formáte mám mať ten dátumový stĺpec. Mám ho ako Datetime momentálne. Čítal som však, ze tieto dátumové záležitosti sú dosť citlivé na formát dátumu. Ten sa dá nejak nastaviť, zmeniť, určiť? Ale keď predsa používam serverový dátum ako na zápis tak aj na čítanie z databázy, malo by to byť, jedno, nie?

Riešenie 2 :
Tento problém poznám. Najlepšie je nastaviť si v databáze jeden formát pomocou príkazu :

	Set Dateformat dmy
	

a v ASP stránkach už iba upravovať dátum pomocou VBScriptových funkcií, ktorých prehľad je nižšie.

Prehľad 1.
Prehľad užitočných dátumovo-časových funkcií vo VBScripte :

Dátové funkcie VBScriptu
Funkcia Syntax Ukážka
Now()   11.4.2000 17:20:26
Time()   17:20:26
Date()   11.4.2000
Day() Day(dátum) 11
Month() Month(dátum) 4
Year() Year(dátum) 2000
Hour() Hour(čas) 17
Minute() Minute(čas) 20
Second() Second(čas) 26
Weekday() Weekday(dátum,[prvý deň týždňa]) napr.: Weekday(Date(),Monday) 2

Prehľad 2.
Prehľad dátumových a časových funkcií v T-SQL.

Dátové funkcie T-SQL
Funkcia Parametre Ukážka
DATENAME(datepart,date)
vyberie menu časti dátumu
datepart - year, quarter, month, dayofyear, day, week, weekday, hour, minute, second, millisecond
date - dátum
Select datename(month,getdate())
Result : April
DATEPART(datepart,date)
vyberie časť dátumu
datepart - year, quarter, month, dayofyear, day, week, weekday, hour, minute, second, millisecond
date - dátum
Select datepart(day,getdate())
Result : 11
DATEADD(datepart,number,date)
vracia novú dátumovú hodnotu vypočítanú na základe pridaného intervalu špecifikovaného dátumu
datepart - year, quarter, month, dayofyear, day, week, weekday, hour, minute, second, millisecond
number - o koľko sa má zvýšiť daná hodnota
date - dátum
Select dateadd(day,5,getdate())
Result : 2000-04-16 17:07:40.437
DATEDIFF(datepart, startdate, enddate)
vracia číslo vychádzajúce z porovnania dvoch dátumov resp. časov pomocou parametra datepart
datepart - year, quarter, month, dayofyear, day, week, weekday, hour, minute, second, millisecond
startdate - začiatok kalkulácie
enddate - koniec kalkulácie
Select datediff(day,'04.04.2000',getdate())
Result : 7


 
 Príslušné odkazy k téme
Viac o téme: Tipy a Triky | Iné články od: Admin | Pošli komentár | Stránka vhodná na tlač width=15 height=11  Pošli tento článok priateľovi, známemu width=15 height=11


Najčítanejšie články Tipy a Triky:
JavasScript: Blokovanie prístupu na stránku v závislosti od IP adresy

Ďalšie články v rubrike Tipy a Triky:

 

"Dátové funkcie a práca s nimi v ASP stránkach a MS SQLServer" | Login / vytvor konto | 0 Komentárov
Prah
Za obsah komentárov je zodpovedný užívateľ, nie prevádzkovateľ týchto stránok.



Autorské práva:   ©1999 - 2001 Developer Zone [developer@developer.sk]

Všetky články sú vlastníctvom autorov Developer Zone. Všetky práva vyhradené. Stránky Developer.sk sú vytvorené pomocou PHP-Nuke.
Odkazy na nové články je možné preberať pomocou:Backend.php.