powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Путаница с временной зоной
25 сообщений из 27, страница 1 из 2
Путаница с временной зоной
    #38406759
darlov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Округляю дату по дню, формат времени храню в целых числах UNIX_TIMESTAMP, временная зона у меня +6
Произвожу
Код: sql
1.
from_unixtime((datetime DIV 86400)*86400)


Получаю 2013-09-25 06:00:00. Почему время сдвигается?
...
Рейтинг: 0 / 0
Путаница с временной зоной
    #38406772
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Потому что from_unixtime (и соответственно смещение зоны), который учитывает зону, применяется ПОСЛЕ "округления".

date(from_unixtime(datetime)) ?
...
Рейтинг: 0 / 0
Путаница с временной зоной
    #38406779
darlov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо!
...
Рейтинг: 0 / 0
Путаница с временной зоной
    #38409268
darlov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ничего не понимаю, объясните пожалуйста, вывожу 2 столбца со временем, ограничиваю его WHERE точно по времени. Один столбец округляю до дня, другой показывает действующее время, оба столбца проходят через функцию from_unixtime(), но результат разный.
Код: sql
1.
2.
3.
4.
5.
set @timemin=UNIX_TIMESTAMP('2013-09-25 00:00:00')-1;
set @timemax=UNIX_TIMESTAMP('2013-09-25 23:59:59');
SELECT t0.value , from_unixtime((t0.date_time div 86400)* 86400), from_unixtime(t0.date_time)
FROM tbl_tag_data_hour t0
WHERE t0.id_tag_data_Kip=95[SRC XML]


AND t0.date_time>@timemin AND t0.date_time< @timemax order by t0.id desc ;
[/SRC]
Результат получается

Как видно, столбец с округлением до дня, отстает на 6 часов.
...
Рейтинг: 0 / 0
Путаница с временной зоной
    #38409272
darlov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Запрос почему то некорректно отобразился, подправляю.
Код: sql
1.
2.
3.
4.
5.
6.
set @timemin=UNIX_TIMESTAMP('2013-09-25 00:00:00')-1;
set @timemax=UNIX_TIMESTAMP('2013-09-25 23:59:59');
SELECT t0.value , from_unixtime((t0.date_time div 86400)* 86400), from_unixtime(t0.date_time)
FROM tbl_tag_data_hour t0
WHERE t0.id_tag_data_Kip=95
AND t0.date_time>@timemin  AND t0.date_time< @timemax order by t0.id desc ;
...
Рейтинг: 0 / 0
Путаница с временной зоной
    #38409273
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Akinafrom_unixtime (и соответственно смещение зоны), который учитывает зону, применяется ПОСЛЕ "округления"
За время, прошедшее с момента публикации этого сообщения, поведление функции не изменилось.
...
Рейтинг: 0 / 0
Путаница с временной зоной
    #38409280
darlov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Akina, это я понял, но почему тогда другой столбец from_unixtime(t0.date_time) не сместил
зону?
...
Рейтинг: 0 / 0
Путаница с временной зоной
    #38409303
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А ты ещё неизменённое t0.date_time, отформатированное в дату-время без учёта зоны , выведи...
...
Рейтинг: 0 / 0
Путаница с временной зоной
    #38409347
darlov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Akina, что то я не понял, объясните поподробней.
Каким образом мне тогда округлить, без смещения зоны?
...
Рейтинг: 0 / 0
Путаница с временной зоной
    #38409475
darlov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Еще, время в базе данных лучше хранить в UTC или в местном времени?
...
Рейтинг: 0 / 0
Путаница с временной зоной
    #38409514
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
darlovКаким образом мне тогда округлить, без смещения зоны?
DDL таблицы в студию

darlovЕще, время в базе данных лучше хранить в UTC или в местном времени?
Смотря где и для чего. Иногда лучше так, иногда эдак...
...
Рейтинг: 0 / 0
Путаница с временной зоной
    #38409571
darlov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Akina,

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
CREATE TABLE `tbl_tag_data_hour` (
	`id` INT(11) NOT NULL AUTO_INCREMENT,
	`id_tag_data_Kip` INT(11) NOT NULL,
	`value` FLOAT NOT NULL,
	`date_time` INT(11) NOT NULL,
	PRIMARY KEY (`id`)
)
COLLATE='utf8_general_ci'
ENGINE=InnoDB
AUTO_INCREMENT=45009
AVG_ROW_LENGTH=43;
...
Рейтинг: 0 / 0
Путаница с временной зоной
    #38409762
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ага... штамп времени храните не в переменной типа TIMESTAMP, а в INT(11)? Это кто ж вам такую хню посоветовал?
Смените тип поля. И вообще почитайте вот тут , просветляет.
...
Рейтинг: 0 / 0
Путаница с временной зоной
    #38409820
darlov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Akina,
Хорошо, поменяю, а это что то меняет в моей сложившейся проблеме?
...
Рейтинг: 0 / 0
Путаница с временной зоной
    #38410208
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Представь, что у тебя числовое поле. В нём значения. И ты сортируешь. Как сортируется? 1,2,3...,9,10,11,12,...
Теперь представь, что оно текстовое, и в нём АБСОЛЮТНО ТЕ ЖЕ значения. И ты сортируешь. Как сортируется? 1,10,11,12,...,2,3...,9,...

Начинай наконец думать, а?
...
Рейтинг: 0 / 0
Путаница с временной зоной
    #38410585
darlov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Akina, ну и? временная метка Unix это целое число
и в колонке int будет сортироваться как число, а не строка. Почему то определенная часть программистов используют int для unix времени. Возможно это не правильно, так как ты это утверждаешь и мне пока рано ссудить, опыт мал, но я не вижу разницы. може. у mysql свой алгоритм работы с типом timestamp к примеру валидация или выше производительность конвертации даты , разъясни пжта
...
Рейтинг: 0 / 0
Путаница с временной зоной
    #38410812
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
darlovAkina, ну и? временная метка Unix это целое число
Последний раз повторяю. Есть два типа данных:

ВРЕМЕННАЯ МЕТКА
ЧИСЛО

Разницу между словами видишь? они даже разной длины! Так вот во всём остальном они точно так же различаются. То есть ни разу не похожи. И ведут они себя соответственно по-разному в одних и тех же условиях. И там, где таймштамп будет вести себя как надо, интеджер выписывает кренделя.
...
Рейтинг: 0 / 0
Путаница с временной зоной
    #38410964
darlov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Akina, очень абстрактно объяснил, ну ладно раз положено буду хранить unix time в поле timestamp
...
Рейтинг: 0 / 0
Путаница с временной зоной
    #38410967
darlov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Akina, вы меня сбили с толку, сейчас изменил тип поля на timestamp и все данные привились к виду "0000-00-00 00:00:00", этого мне не надо, я храню данные в виде 1380432945.
...
Рейтинг: 0 / 0
Путаница с временной зоной
    #38411324
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник


добавьте столбец таймштамп, забейте в него разово имеющиеся данные через фром_юникстайм и удалите уже нахрен этот инт... в конце концов, мускль не обязан иметь в своём арсенале имплицитные касты на все случаи жизни.
...
Рейтинг: 0 / 0
Путаница с временной зоной
    #38411342
darlov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
tanglir

добавьте столбец таймштамп, забейте в него разово имеющиеся данные через фром_юникстайм и удалите уже нахрен этот инт...
Да с этим проблем нет, просто никак не определюсь с форматом хранения времени.
tanglirв конце концов, мускль не обязан иметь в своём арсенале имплицитные касты на все случаи жизни.

Вполне логично, просто в момент обучения сбили всякие блоги программистов утверждающие что лучшем способом является хранить unix_time в чистом виде (как целое число) в поле int().
...
Рейтинг: 0 / 0
Путаница с временной зоной
    #38411349
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
darlov, если сервером предусмотрена возможность хранить тш как тш, зачем придумывать что-то ещё? :)
...
Рейтинг: 0 / 0
Путаница с временной зоной
    #38411352
darlov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
tanglir, Согласен, спасибо.
...
Рейтинг: 0 / 0
Путаница с временной зоной
    #38411367
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
darlovданные привились к виду "0000-00-00 00:00:00", этого мне не надо, я храню данные в виде 1380432945.
Почему? причина какая?
...
Рейтинг: 0 / 0
Путаница с временной зоной
    #38411370
darlov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Akina, ИМХО математические задачи на дату производить удобно, к примеру округлять дату,высчитывать разницу по диапазону .
...
Рейтинг: 0 / 0
25 сообщений из 27, страница 1 из 2
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Путаница с временной зоной
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]