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


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

date(from_unixtime(datetime)) ?
...
Рейтинг: 0 / 0
25.09.2013, 09:10:58
    #38406779
darlov
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Путаница с временной зоной
Спасибо!
...
Рейтинг: 0 / 0
27.09.2013, 09:41:28
    #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
27.09.2013, 09:43:31
    #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
27.09.2013, 09:43:47
    #38409273
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Путаница с временной зоной
Akinafrom_unixtime (и соответственно смещение зоны), который учитывает зону, применяется ПОСЛЕ "округления"
За время, прошедшее с момента публикации этого сообщения, поведление функции не изменилось.
...
Рейтинг: 0 / 0
27.09.2013, 09:46:55
    #38409280
darlov
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Путаница с временной зоной
Akina, это я понял, но почему тогда другой столбец from_unixtime(t0.date_time) не сместил
зону?
...
Рейтинг: 0 / 0
27.09.2013, 09:59:29
    #38409303
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Путаница с временной зоной
А ты ещё неизменённое t0.date_time, отформатированное в дату-время без учёта зоны , выведи...
...
Рейтинг: 0 / 0
27.09.2013, 10:29:15
    #38409347
darlov
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Путаница с временной зоной
Akina, что то я не понял, объясните поподробней.
Каким образом мне тогда округлить, без смещения зоны?
...
Рейтинг: 0 / 0
27.09.2013, 11:26:42
    #38409475
darlov
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Путаница с временной зоной
Еще, время в базе данных лучше хранить в UTC или в местном времени?
...
Рейтинг: 0 / 0
27.09.2013, 11:43:44
    #38409514
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Путаница с временной зоной
darlovКаким образом мне тогда округлить, без смещения зоны?
DDL таблицы в студию

darlovЕще, время в базе данных лучше хранить в UTC или в местном времени?
Смотря где и для чего. Иногда лучше так, иногда эдак...
...
Рейтинг: 0 / 0
27.09.2013, 12:09:09
    #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
27.09.2013, 13:27:09
    #38409762
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Путаница с временной зоной
Ага... штамп времени храните не в переменной типа TIMESTAMP, а в INT(11)? Это кто ж вам такую хню посоветовал?
Смените тип поля. И вообще почитайте вот тут , просветляет.
...
Рейтинг: 0 / 0
27.09.2013, 13:53:21
    #38409820
darlov
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Путаница с временной зоной
Akina,
Хорошо, поменяю, а это что то меняет в моей сложившейся проблеме?
...
Рейтинг: 0 / 0
27.09.2013, 17:02:43
    #38410208
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Путаница с временной зоной
Представь, что у тебя числовое поле. В нём значения. И ты сортируешь. Как сортируется? 1,2,3...,9,10,11,12,...
Теперь представь, что оно текстовое, и в нём АБСОЛЮТНО ТЕ ЖЕ значения. И ты сортируешь. Как сортируется? 1,10,11,12,...,2,3...,9,...

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

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

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


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

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

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


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