SELECT t.event_date,
case
when TIME_TO_SEC(t.event_date) >= inter.begin AND TIME_TO_SEC(t.event_date) < inter.end -- типичный случай, определяем номер интервала
then floor((TIME_TO_SEC(t.event_date) - inter.begin) / inter.width) + 1
when TIME_TO_SEC(t.event_date) = inter.end -- особый случай, определяем правильный номер интервала ровно на окончании дневного периода
then floor((inter.end - inter.begin) / inter.width)
when TIME_TO_SEC(t.event_date) < inter.begin -- маркируем номер интервала до начала дневного периода
then -1
when TIME_TO_SEC(t.event_date) > inter.end -- маркируем номер интервала после окончания дневного периода
then -2
else null -- экстраситуация, если when-then охватывают все условия, то сюда никогда не попадем
end as full_interval_number,
case
when TIME_TO_SEC(t.event_date) >= inter.begin AND TIME_TO_SEC(t.event_date) < inter.end -- типичный случай, определяем время начала интервала
then SEC_TO_TIME(floor((TIME_TO_SEC(t.event_date) - inter.begin) / inter.width) * inter.width + inter.begin)
when TIME_TO_SEC(t.event_date) = inter.end -- особый случай, определяем правильное время начала интервала ровно на окончании дневного периода
then SEC_TO_TIME(floor((TIME_TO_SEC(t.event_date) - inter.begin - 1) / inter.width) * inter.width + inter.begin)
when TIME_TO_SEC(t.event_date) < inter.begin -- если за пределами дневного периода, то время окончания за-null-яем
OR TIME_TO_SEC(t.event_date) > inter.end
then null
else null -- экстраситуация, если when-then охватывают все условия, то сюда никогда не попадем
end as full_interval_begin,
case
when TIME_TO_SEC(t.event_date) >= inter.begin AND TIME_TO_SEC(t.event_date) < inter.end -- типичный случай, определяем время окончания интервала
then SEC_TO_TIME(ceil((TIME_TO_SEC(t.event_date) - inter.begin + 1) / inter.width) * inter.width + inter.begin)
when TIME_TO_SEC(t.event_date) = inter.end -- особый случай, определяем правильное время окончания интервала ровно на окончании дневного периода
then SEC_TO_TIME(ceil((TIME_TO_SEC(t.event_date) - inter.begin - 1) / inter.width) * inter.width + inter.begin)
when TIME_TO_SEC(t.event_date) < inter.begin -- если за пределами дневного периода, то время окончания за-null-яем
OR TIME_TO_SEC(t.event_date) > inter.end
then null
else null -- экстраситуация, если when-then охватывают все условия, то сюда никогда не попадем
end as full_interval_end
FROM (select STR_TO_DATE('01.06.2018 08:50:00', '%d.%m.%Y %H:%i:%s') event_date union all -- до дневного периода
select STR_TO_DATE('01.06.2018 08:59:59', '%d.%m.%Y %H:%i:%s') event_date union all -- за секунду до начала дневного периода
select STR_TO_DATE('01.06.2018 09:00:00', '%d.%m.%Y %H:%i:%s') event_date union all -- ровно на начале дневного периода первого интервала
select STR_TO_DATE('01.06.2018 09:00:01', '%d.%m.%Y %H:%i:%s') event_date union all -- ровно после одной секунды в первом интервале дневного периода
select STR_TO_DATE('01.06.2018 09:14:59', '%d.%m.%Y %H:%i:%s') event_date union all -- за секунду до окончания первого интервала
select STR_TO_DATE('01.06.2018 09:15:00', '%d.%m.%Y %H:%i:%s') event_date union all -- начало второго интервала
select STR_TO_DATE('01.06.2018 09:15:01', '%d.%m.%Y %H:%i:%s') event_date union all -- ровно после первой секунды второго интервала
select STR_TO_DATE('01.06.2018 17:59:59', '%d.%m.%Y %H:%i:%s') event_date union all -- ровно за секунду до окончания дневного периода
select STR_TO_DATE('01.06.2018 18:00:00', '%d.%m.%Y %H:%i:%s') event_date union all -- ровно на границе дневного периода
select STR_TO_DATE('01.06.2018 18:00:01', '%d.%m.%Y %H:%i:%s') event_date union all -- ровно секунда после дневного периода
select STR_TO_DATE('01.06.2018 18:10:00', '%d.%m.%Y %H:%i:%s') event_date) t, -- после дневного периода
(select TIME_TO_SEC('09:00:00') as begin, -- начало дневного периода
TIME_TO_SEC('18:00:00') as end, -- окончание дневного периода
TIME_TO_SEC('00:15:00') as width -- ширина интервала
) inter
$db = db_connect();
foreach ($countries as $country) {
echo $country . "<br>";
db_add_country($country);
}
function db_add_country($country){
global $db;
$query = "INSERT INTO countries VALUES(NULL, ?)";
$stmt = $db->prepare($query);
$stmt->bind_param("s", $country);
$stmt->execute();
}
Не работает.
$address = mysqli_fetch_assoc($result);
var_dump($address);
$is_deleted = mysqli_query($resource, "DELETE FROM addresses WHERE id = {$address['id']};");
var_dump($is_deleted);
$is_updated = mysqli_query($resource,"INSERT INTO payments VALUES ($userId, $productPrice)");
var_dump($is_updated);
echo mysql_error();
Если их всего две вариации - телефон и почта, то очень непрактичный вариант.