[MySQL4] odejmowanie dat i wynik w godzinach
Paweł Jurewicz - 17-11-2005 11:21
[MySQL4] odejmowanie dat i wynik w godzinach
Mam w tabeli kolumne `data`, gdzie przechowywana jest wartosc DATETIME i te wartosc chce odjac od NOW() i uzyskana rownice przeliczyc na godziny (a najlepiej na dni i godziny) i nic nie rozumiem z wynikow. najgorsze jest to, ze jak odejmuje
SELECT `data` - NOW() FROM tabelka
to uzyskuje zupelnie inna ilosc sekund lub czegos tam (?), niz odejmujac w ten sposob:
SELECT unix_timestamp(`data`) - unix_timestamp(NOW()) FROM tabelka
nic tu nie rozumiem. :-(
-- Wysłano z serwisu Usenet w portalu Gazeta.pl -> http://www.gazeta.pl/usenet/
Adam - 17-11-2005 19:15
Paweł Jurewicz napisał(a): > Mam w tabeli kolumne `data`, gdzie przechowywana jest wartosc DATETIME i te > wartosc chce odjac od NOW() i uzyskana rownice przeliczyc na godziny (a > najlepiej na dni i godziny) i nic nie rozumiem z wynikow. najgorsze jest to, > ze jak odejmuje > > SELECT `data` - NOW() FROM tabelka > > to uzyskuje zupelnie inna ilosc sekund lub czegos tam (?), niz odejmujac w ten > sposob: > > SELECT unix_timestamp(`data`) - unix_timestamp(NOW()) FROM tabelka > > nic tu nie rozumiem. :-( >
jeśli data1 = '2004-07-10 12:00:05' a data2 = '2004-07-10 13:10:05'
interpretacja data2-data1 jest taka jak :
20040710131005-20040710120005
czyli wg Mysql'owego timestampa
W praktyce jeśli chcesz sprawdzić czy daty są z tej samej godziny dnia mozesz zbadac roznice czasu w taki sposób:
WHERE ABS(date2-date1)>10000 ...
a czy daty są z tego samego dnia:
WHERE ABS(date2-date1)>1000000 ...
pozdrawiam
Paweł Jurewicz - 18-11-2005 12:01
Adam <admoz@gazeta.pl> napisał(a):
> Paweł Jurewicz napisał(a): > > Mam w tabeli kolumne `data`, gdzie przechowywana jest wartosc DATETIME i te > > wartosc chce odjac od NOW() i uzyskana rownice przeliczyc na godziny (a > > najlepiej na dni i godziny) i nic nie rozumiem z wynikow. najgorsze jest to, > > ze jak odejmuje > > > > SELECT `data` - NOW() FROM tabelka > > > > to uzyskuje zupelnie inna ilosc sekund lub czegos tam (?), niz odejmujac w te > n > > sposob: > > > > SELECT unix_timestamp(`data`) - unix_timestamp(NOW()) FROM tabelka > > > > nic tu nie rozumiem. :-( > > > > jeśli data1 = '2004-07-10 12:00:05' > a data2 = '2004-07-10 13:10:05' > > interpretacja data2-data1 jest taka jak : > > 20040710131005-20040710120005 > > czyli wg Mysql'owego timestampa > > W praktyce jeśli chcesz sprawdzić czy daty są z tej samej godziny dnia > mozesz zbadac roznice czasu w taki sposób: > > WHERE ABS(date2-date1)>10000 ... > > a czy daty są z tego samego dnia: > > WHERE ABS(date2-date1)>1000000 ...
Nie chce tego sprawdzic. Chce w wyniku podac roznice:
"Zostalo ci x godzin do czasu z pola `data`"
i czemu odejmujac normalnie mam inne godziny niz odejmujac po przekonwertowaniu na unix_timestamp?
-- Wysłano z serwisu Usenet w portalu Gazeta.pl -> http://www.gazeta.pl/usenet/
Adam - 18-11-2005 12:01
>>jeśli data1 = '2004-07-10 12:00:05' >>a data2 = '2004-07-10 13:10:05' >> >>interpretacja data2-data1 jest taka jak : >> >>20040710131005-20040710120005 >> >>czyli wg Mysql'owego timestampa >> >>W praktyce jeśli chcesz sprawdzić czy daty są z tej samej godziny dnia >>mozesz zbadac roznice czasu w taki sposób: >> >>WHERE ABS(date2-date1)>10000 ... >> >>a czy daty są z tego samego dnia: >> >>WHERE ABS(date2-date1)>1000000 ... > > > Nie chce tego sprawdzic. Chce w wyniku podac roznice: > > "Zostalo ci x godzin do czasu z pola `data`" > > i czemu odejmujac normalnie mam inne godziny niz odejmujac po > przekonwertowaniu na unix_timestamp? >
no wiec ilosc dni jaka roznia sie daty sprawdzisz
SELECT ABS(date2-date1)/10000 as roznica_godzin
Paweł Jurewicz - 23-11-2005 11:04
Adam <admoz@gazeta.pl> napisał(a):
> >>jeśli data1 = '2004-07-10 12:00:05' > >>a data2 = '2004-07-10 13:10:05' > >> > >>interpretacja data2-data1 jest taka jak : > >> > >>20040710131005-20040710120005 > >> > >>czyli wg Mysql'owego timestampa > >> > >>W praktyce jeśli chcesz sprawdzić czy daty są z tej samej godziny dnia > >>mozesz zbadac roznice czasu w taki sposób: > >> > >>WHERE ABS(date2-date1)>10000 ... > >> > >>a czy daty są z tego samego dnia: > >> > >>WHERE ABS(date2-date1)>1000000 ... > > > > > > Nie chce tego sprawdzic. Chce w wyniku podac roznice: > > > > "Zostalo ci x godzin do czasu z pola `data`" > > > > i czemu odejmujac normalnie mam inne godziny niz odejmujac po > > przekonwertowaniu na unix_timestamp? > > > > no wiec ilosc dni jaka roznia sie daty sprawdzisz > > SELECT ABS(date2-date1)/10000 as roznica_godzin
Nie do konca mnie to satysfakcjonuje, z tej prostej przyczyny, ze mam funkcje IF, ktora mi odejmuje daty TYLKO gdy pierwsza jest wieksza od drugiej (bo tylko takie sytuacje mnie interesuja).
Dlaczego jednak wychodza mi rozne wyniki przed i po konwersji na UNIX_TIMESTAMP (!) :-(
gdyby ktos mi to wytlumaczyl...
-- Wysłano z serwisu Usenet w portalu Gazeta.pl -> http://www.gazeta.pl/usenet/
zanotowane.pldoc.pisz.plpdf.pisz.pleffulla.pev.pl
|
[mysql 5.x] jak =?ISO-8859-2?Q?zrealizowa=E6_zapytanie=3F_cz?==?ISO-8859-2?Q?yli_podzapytanie_i_wi=EAcej_ni=BF_jeden_rz=B1? ==?ISO-8859-2?Q?d_wynik=F3w?=
Oracle PL/SQL Wstawianie =?ISO-8859-2?Q?wynik=F3w_kolekcji_d?==?ISO-8859-2?Q?o_tabeli?=
[MySQL] Ograniczenie =?ISO-8859-2?Q?ilo=B6=E6_wynik=F3w_na_?==?ISO-8859-2?Q?podstawie_count=28=29?=
[MySql] Jak =?ISO-8859-2?Q?por=F3wna=E6_wynik_zapytania_ze?==?ISO-8859-2?Q?_zmienn=B1=3F?=
[MySQL] Zapytanie z pliku , wynik do pliku
MSSQL 2005 i uruchamianie procedury o =?ISO-8859-2?Q?okre=B6lone?==?ISO-8859-2?Q?j_godzinie?=
=?ISO-8859-2?Q?wynik_podzapytania_jako_pojedy=F1cza_warto=B6= E6?=
=?iso-8859-2?q?wy=B6wietlenie_wynik=F3w_SELECTa_w_php?=
Problem z zapytaniem MySQL i PHP wynik zwraca 3 razy, dlaczego?
=?iso-8859-2?q?SQL:_left_join:_dublowanie_wynik=F3w?=
zanotowane.pldoc.pisz.plpdf.pisz.plmisida.pev.pl
Cytat
Decede mihi sole - nie zasłaniaj mi słonca. Gdy kogoś kochasz, jesteś jak stworzyciel świata - na cokolwiek spojrzysz, nabiera to kształtu, wypełnia się barwą, światłem. Powietrze przytula się do ciebie, choćby był mróz, a ty masz w sobie tyle radości, że musisz ją rozdawać wokoło, bo się w tobie nie mieści Hoc fac - tak czyń. A tergo - od tyłu; z tyłu. I czarne włosy posiwieją. Safona |
|