Loading...
PHP/MySQL | Вопросы экспертам по MySQL

<?php
MySQL::run('update users set hp = hp + (unix_timestamp(now()) - hp_up) / 12, hp_up = unix_timestamp(now()) where hp < hp_max and (unix_timestamp(now()) - hp_up) / 12 >= 1 and id = ? limit 1', [UID]);


1. Есть ли более короткая функция вместо unix_timestamp(now()) ?

2. Как в этот запрос засунуть условие:

ЕСЛИ

hp + (unix_timestamp(now()) - hp_up) / 12

БОЛЬШЕ

hp_max

ТО

hp = hp_max

???

*CRAZY*
http://qaru.site/questions/937534/difference-between-unixtimestamp-and-now-in-mysql


это не то - это просто, чем отличается, я заменил time() из пыха на unix_timestamp(now()) из мускула, но какая-то длинная змея получается из кода, может есть компактнее функция
PhpStorm, ну я понял что тебе не нужен именно NOW() если бы я пошел этим путем то я бы просто определил переменную $time перед запросом равную unixstamp и использовал бы ее. Но обычно я перекладываю вычисления на php а не на sql сервер
PhpStorm, по твоей проблеме, определи хранимую процедуру в SQL и используй ее
Сибирский (10.01.2019 в 13:09)
PhpStorm, ну я понял что тебе не нужен именно NOW() если бы я пошел этим путем то я бы просто определил переменную $time перед запросом равную unixstamp и использовал бы ее. Но обычно я перекладываю вычисления на php а не на sql сервер


хочу запросом считать, поэтому такая конструкция

мне просто нужна текущая отметка unix, типа time(), только на мускуле - пока что только такой вариант нашёл
PhpStorm, ну если бы дочитал статью то увидал бы вот эти строки
MySQL UNIX_TIMESTAMP() возвращает временную метку Unix в секундах с "1970-01-01 00:00:00" UTC как целое число без знака, если никакие аргументы не передаются с UNIT_TIMESTAMP().
Сибирский (10.01.2019 в 13:13)
PhpStorm, ну если бы дочитал статью то увидал бы вот эти строки
MySQL UNIX_TIMESTAMP() возвращает временную метку Unix в секундах с "1970-01-01 00:00:00" UTC как целое число без знака, если никакие аргументы не передаются с UNIT_TIMESTAMP().


так а что я делаю?

получается я лишний раз сую текущую отметку в виде NOW и конвертирую её в текущую отметку unix

так что ли?

два раза получаю одно и то же?
Ну типа того, учитывая то, что NOW() выдает форматированную строку текущего времени а UNIX_TIMESTAMP() целое вида unixstamp )
Сибирский (10.01.2019 в 13:21)
Ну типа того, учитывая то, что NOW() выдает форматированную строку текущего времени а UNIX_TIMESTAMP() целое вида unixstamp )


ща глушану now()
Онлайн: 4
Время:
Gen. 0.1225
(c) Bym.Guru 2010-2025