|
Тема
|
local <--> GMT unix timestamp
|
|
Автор |
gonzales () |
Публикувано | 01.11.01 15:14 |
|
Значи, вземам от mySQL unixtimestam, който е по Гринуич, и трябва да ко сравня с текущото време. Обаче РНР ми дава времето според времевата зона на машината. И така, трябва да преубразувам Гринуичго в локално време или обратно, но ми трябва юникс-време. Това което измислих е:
strtotime(gmdate("M d Y H:i:s", time()))
обаче се чудех няма ли по-добър начин, без да минавам през стринг?
| |
Тема
|
Re: local <--> GMT unix timestamp
[re: gonzales]
|
|
Автор |
bofh (°) (_) (°) |
Публикувано | 02.11.01 10:59 |
|
select unix_timestamp(now())
select fldUnixTimeStamp - unix_timestamp(now()) from tblWhatever;
bofh
| |
Тема
|
Re: local <--> GMT unix timestamp
[re: bofh]
|
|
Автор | gonzales (Нерегистриран) |
Публикувано | 05.11.01 16:14 |
|
май има малко нелазбирателство. в mysql имам поле в което е записано някякво време по Гринуич. обаче трябва да го сравня със времето в момента, а от PHP мога да взема unixtimestamp само в локално време. та се чудех за друг начин, освен описания в началото, да превърна unixtimestamp от GMT в локално време или обратно. тоест, да извади/прибави съответното количество секунди, независимо на коя машина в коя точка на света се изпълнява скрипта.
| |
Тема
|
Re: local <--> GMT unix timestamp
[re: gonzales]
|
|
Автор |
salle (Един такъв) |
Публикувано | 05.11.01 17:29 |
|
select unix_timestamp(now()) as local_unixtimestamp, unix_timestamp(now() - interval 2 hour) as GMT_unixtimestamp, now() as local_time, now() - interval 2 hour as GMT_time;
i t.n.
Izpolzvai mysql DATETIME ili TIMESTAMP vmesto da pazish Unix timestamp (konvertiraneto e elementarno) i shte poluchish strahotnia nabor nam MySQL ot funkcii za smetki s dati i chasove i izobshto shte zabravish za saotvetnit e funkcii v PHP
Nai malkoto shte zabravish kak se konvertirat cahsove, dni, meseci kam secundi - MySQL si go mozhe
primer:
delete from log_table where ts > now() - interval 1 month;
Samo pomisli kak shte napravish neshto tolkova prosto v PHP :)
Linux is like a wigwam - No Windows, No Gates, Apache inside
| |
Тема
|
Re: local <--> GMT unix timestamp
[re: salle]
|
|
Автор |
gonzales () |
Публикувано | 05.11.01 18:12 |
|
$query = "SELECT metar, UNIX_TIMESTAMP(timestamp) FROM metars WHERE station = '$station' ORDER BY UNIX_TIMESTAMP(timestamp) DESC";
$result = mysql_query($query);
if (mysql_num_rows($result)) {
list($metar, $timestamp) = mysql_fetch_row($result);
if (isset($metar)) {
if ($always_use_cache || $timestamp > strtotime(gmdate("M d Y H:i:s", time())) - 1800) {
^^^^^^^^^
izraza, koito bih iskal da zamenia s drug, ako e vazmozno!
| |
Тема
|
Re: local <--> GMT unix timestamp
[re: gonzales]
|
|
Автор |
salle (Един такъв) |
Публикувано | 06.11.01 12:34 |
|
Това, което ти предложихе дотук беше да вкараш въпросния IF() в SQL-а
т.е. да промениш както select частта така и where клаузата
Имаш таблица metars
и от нея искаш да извадиш (съответно да обработиш в PHP-то) редовете за които ......?
И двата ти if() могат да бъдат обработени още в SQL заявката
вместо
if (isset($metar))
if(.....)
да взимаш в select само тези редове, които те интересуват
примерно
... where station = '$station' and metar is not null and timestamp > now() - 2 hour;
Това е нормалната логика когато работиш с бази данни - няма смисъл да извличаш нещо от БД и после да го филтрираш
Обясни по-подробно каква ти е идеята и премести този въпрос в Клуб Бази Данни
Linux is like a wigwam - No Windows, No Gates, Apache inside
| |
Тема
|
Re: local <--> GMT unix timestamp
[re: salle]
|
|
Автор |
gonzales () |
Публикувано | 07.11.01 16:35 |
|
tva niama otnoshenie kam bazi danni, vaprosa e:
kak moga da prevarna unixtimestamp ot lokalno v GMT vreme ili obratno?
edinstvenoto reshenie koeto imam, e da go napravia na string i posle pak na timestamp, ma se chudeh niama li drug nachin. obiasneniata za bazata danni i t.n. biaha prosto konkretnia sluchai, no i v nego ne stava da sloza proverkata v sql-a, shtoto na vinagi e nuzna.
| |
|
pogledni vnimatelno tova
mysql> select date_sub(from_unixtime(unix_timestamp(now())),interval 2 hour);
+----------------------------------------------------------------+
| date_sub(from_unixtime(unix_timestamp(now())),interval 2 hour) |
+----------------------------------------------------------------+
| 2001-11-07 15:40:33 |
+----------------------------------------------------------------+
1 row in set (0.06 sec)
mysql>
tuk imash i dvata prehoda
from_unixtime
unix_timestamp
sega izqsni li ti se?
bofhРедактирано от bofh на 07.11.01 17:41.
| |
Тема
|
Re: -
[re: bofh]
|
|
Автор |
salle (Един такъв) |
Публикувано | 08.11.01 10:47 |
|
date_sub(from_unixtime(unix_timestamp(now())),interval 2 hour)
еквивалентен запис на тово е:
from_unixtime(unix_timestamp(now())) - interval 2 hour;
А според мен е още по-разбираемо
естествено това което правиш е +1-1 ама това е друга тема
gonzales
Цялата работа е, че в PHP сметките с часове и дати са доста дървени докато в mysql са простичко и весело нещо
Linux is like a wigwam - No Windows, No Gates, Apache inside
| |
|
ДА НО НА МЕН МИ ТРЯБВА ДА ГО НАПРАВЯ В PHP
e очевидно никой не се сеща за по-добро решение на проблема, както и да е :-)
| |
|
|
|
|