-Ðóáðèêè

 -Ìóçûêà

 -Ïîäïèñêà ïî e-mail

 

 -Ïîèñê ïî äíåâíèêó

Ïîèñê ñîîáùåíèé â Iwinter

 -Ñòàòèñòèêà

Ñòàòèñòèêà LiveInternet.ru: ïîêàçàíî êîëè÷åñòâî õèòîâ è ïîñåòèòåëåé
Ñîçäàí: 28.04.2008
Çàïèñåé:
Êîììåíòàðèåâ:
Íàïèñàíî: 228


Ðàáîòà ñ äàòàìè (â Oracle)

×åòâåðã, 20 Àâãóñòà 2009 ã. 10:09 + â öèòàòíèê

Â÷åðà "ïðèïåðëî" íàïèñàòü íåáîëüøîé ñêðèïòèê èçìåíåíèÿ ïîëÿ òèïà Date. ("îáìàíóòü" êàññîâûé ìîäóëü äëÿ çàïóñêà íà àâòîìàòå ïîëíîé âûãðóçêè íà êàññû). Âñå âð ãîíÿåì çàïðîñû/îò÷åòû, ðàáîòàÿ òîëüêî ñ äàòîé, íå çàõâàòûâàÿ âðåìÿ. À òóò âîò íàäî áûëî òî÷íî è âðåìÿ óêàçûâàòü. Ïîýòîìó è çàìåòî÷êó ïèøó.

Òèï äàííûõ DATE ïðèìåíÿåòñÿ â Oracle äëÿ õðàíåíèÿ äàòû è âðåìåíè. Âíå çàâèñèìîñòè îò ïðèìåíÿåìîãî ïîëüçîâàòåëåì ôîðìàòà, 7 áàéò ïîëÿ òàêîãî òèïà ñîäåðæàò ñëåä.: 1. Âåê 2. Ãîä 3. Ìåñÿö 4. Äåíü 5. ×àñ 6. Ìèíóòà 7. Ñåêóíäà. È óæ òóò èçâëåêàé èç íåãî ÷òî õîøü.

Ïîëåçíûå ô-öèè TO_DATE(ñòðîêà [,ôîðìàò]), TO_CHAR(äàòà [, ôîðìàò]) - èç ñòðîêè â äàòó è èç äàòû â ñòðîêó, ñîîòâ. Íå áóäó ðàñïèñûâàòü ôîðìàòû, ìîæíî íàéòè â ëþáîì õåëïå/èíåòå.

Ìíå ïîíðàâèëîñü, ÷òî ê äàòå ìîæíî ïðèáàâëÿòü äíè, ìåñÿöû, ãîäû, ÷àñû, ìèíóòû, ñåêóíäû. Ñ÷èòàåòñÿ, ÷òî åäèíèöåé çí-ÿ, ïðèáàâëÿåìîãî ê äàòå, ÿâëÿåòñÿ äåíü. Òî áèøü, ÷òîá äîáàâèòü ê äàòå íåñêîëüêî äíåé/ íåäåëü / ìåñÿöåâ (òóò ëó÷øå ADD_MONTHS() þçàòü)/ ëåò, à òæ ÷àñòü äíÿ (÷àñîâ/ ìèíóò/ ñåêóíä), íóæíî ïðîñòî óìíîæèòü íà ñîîòâ.êîýôôèöèåíò, ïðåîáðàçîâàâ âñå ê äíÿì:

SELECT SYSDATE+7 FROM DUAL -- äîáàâèëè íåäåëþ

SELECT TO_CHAR(SYSDATE, 'DD.MM.YYYY HH:MI:SS'), TO_CHAR(SYSDATE + (20/1440), 'DD.MM.YYYY HH:MI:SS')

-- äîáàâèëè 20 ìèíóò (â ñóòêàõ 1440 ìèí.). 

 Âîò â÷åðà è ðàçâëåêëàñü ñ ìèíóòàìè çà ñ÷èòàííûå ñåêóíäû ;)  î÷ óäîáíî. Õîðîøî, ÷òî ïîä ðóêîé åñòü êíèæåíöèÿ "Ñåêðåòû Oracle SQL" îò Ñàíæåé Ìèøðà è Àëàíà Áüþëè. Ðåêîìåíäóþ. À óæ êàê îíà ïîìîãàåò ïðè ñîñòàâëåíèè êàâåðçíûõ çàïðîñîâ!

 

Ðóáðèêè:  Ðàáîòà
Ìåòêè:  

??????   îáðàòèòüñÿ ïî èìåíè Âòîðíèê, 29 Ñåíòÿáðÿ 2009 ã. 14:13 (ññûëêà)
Êàê òåáå âîò ýòî ýòî
select to_oradate(131465502)
from dual
ðåçóëüòàò áóäåò 30.01.06
äàëåå ïðèáàâèì îäèí äåíü
select to_oradate(131465502 + 1)
from dual
ðåçóëüòàò áóäåò 31.01.06 âñå âïîðÿäêå

select to_oradate(131465502 + 2)
from dual

íî êîãäà ïðèáàâèì 2 äíÿ áóäåò îøèáêî
select to_oradate(131465502 ) + 2 --òóò áóäåò âñå âïîðÿäêå
from dual
âîïðîñ êàê ïðèáàâèòü äíè â ñêîáêàõ íî íå çà ñêîáêàìè)))
Îòâåòèòü Ñ öèòàòîé Â öèòàòíèê    |    Íå ïîêàçûâàòü êîììåíòàðèé
Iwinter   îáðàòèòüñÿ ïî èìåíè ×åòâåðã, 01 Îêòÿáðÿ 2009 ã. 11:24 (ññûëêà)
õì, çàïðîñ âûëåòàåò ñ îøèáêîé, íå âîñïðèíèìàåò to_oradate. Îòêóäà çàïóñêàåøü, è âåðñèÿ oracle? ïî-ìîåìó, òàêîé ñòàíäàðòíîé ô-öèè íåò...
Îòâåòèòü Ñ öèòàòîé Â öèòàòíèê
??????   îáðàòèòüñÿ ïî èìåíè Ïÿòíèöà, 16 Îêòÿáðÿ 2009 ã. 13:02 (ññûëêà)
Oracle SQL Developer 1.2.0
Âîáùåì ðàçîáðàëñÿ ïîñåìó íåâûõîäèò ñíà÷àëî ïðèáàâèòü äåíü ïîòîì ïåðåíñòè à âñå äåëî âîò â ýòîì
(DATETIME INTEGER)
RETURN DATE AS MM INTEGER;
YY INTEGER;
TMP INTEGER;
BEGIN YY := DATETIME / 65536; --131465502/65536 = 2006
TMP := MOD(DATETIME,65536); 288
MM := TMP / 256; 7.8 1
TMP := MOD(TMP,256);
RETURN TO_DATE(TO_CHAR(TMP)||'.'||TO_CHAR(MM)||'.'||TO_CHAR(YY),'DD.MM.YYYY');
END;
ïîèãðàéñÿ ñ ýòîé öèôðîé â òîé ôóíêöèè 131465729
Îòâåòèòü Ñ öèòàòîé Â öèòàòíèê    |    Íå ïîêàçûâàòü êîììåíòàðèé
??????   îáðàòèòüñÿ ïî èìåíè Âòîðíèê, 23 Îêòÿáðÿ 2012 ã. 07:33 (ññûëêà)
select to_date('01.01.2012','dd.mm.yyyy')+interval '1' minute+interval '1' hour+interval '1' second from dual - òàê ýòî íóæíî äåëàòü, íå ìàãè÷åñêèìè öèôðàìè ïîëüçîâàòüñÿ
Îòâåòèòü Ñ öèòàòîé Â öèòàòíèê    |    Íå ïîêàçûâàòü êîììåíòàðèé
Êîììåíòèðîâàòü — Ê äíåâíèêó — Ñòðàíèöû: [1] [Íîâûå]
 

Äîáàâèòü êîììåíòàðèé:
Òåêñò êîììåíòàðèÿ: ñìàéëèêè

Ïðîâåðêà îðôîãðàôèè: (íàéòè îøèáêè)

Ïðèêðåïèòü êàðòèíêó:

 Ïåðåâîäèòü URL â ññûëêó
 Ïîäïèñàòüñÿ íà êîììåíòàðèè
 Ïîäïèñàòü êàðòèíêó