|
|
|
2 поля timestamp или 2 поля datetime
|
|||
|---|---|---|---|
|
#18+
Добрый день, уважаемые участники форума! Есть сервис, на котором пользователи создают и участвуют в тендерах. Собственно, есть таблица, содержащая основную информацию по этим тендерам. Помимо прочих, таблица содержит 2 поля: date - дата создания тендера, и date_closed - дата закрытия тендера. Оба поля типа DATE. Недавно подумал, что было бы не плохо показывать время, когда был создан или закрыт тендер. Для этого уже сделали доработку, и теперь мы знает тайм зону пользователя (они их разных регионов РФ) и можем делать запрос к БД с учётом часового пояса юзера. Но вот проблема - никак не удается понять, как теперь перестроить таблицы, а также процесс записи новых тендеров, обновления инфы и закрытия тендеров. С добавлением новой записи более или менее понятно - есть сделать поле date по типу timestamp default CURRENT_TIMESTAMP, то про это поле можно забыть, поскольку оно будет работать на автомате. Но как в этом случаем быть с полем date_closed - когда пользователь закрывает тендер, как добиться, чтобы в этот момент это поле обновлялось до текущей даты и времени? Накопал конструкцию "TIMESTAMP ON UPDATE CURRENT_TIMESTAMP", но как теперь добавить эту запись к существующему полю? Или может вообще отказаться от timestamp в полю datetime - просто перед вставкой новой записи (и при закрытии тендера) переводить дату в unix_timestamp и записывать в таком виде, а выводить уже в поправкой на часовой пояс юзера? Спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.12.2013, 15:42:24 |
|
||
|
2 поля timestamp или 2 поля datetime
|
|||
|---|---|---|---|
|
#18+
Игорь В.П., Вам следует установить триггер на событие AFTER UPDATE, в нем можно сделать SET NEW.date := now(); ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2013, 07:22:25 |
|
||
|
2 поля timestamp или 2 поля datetime
|
|||
|---|---|---|---|
|
#18+
Игорь В.П.как теперь добавить эту запись к существующему полю?RTFM Alter Table Игорь В.П.Или может вообще отказаться от timestamp в полю datetime - просто перед вставкой новой записи (и при закрытии тендера) переводить дату в unix_timestamp и записывать в таком виде, а выводить уже в поправкой на часовой пояс юзера?Не надо думать, что ты что-то сделаешь лучше, чем специально предназначенный для этого инструмент. Paymer-SoftВам следует установить триггер на событие AFTER UPDATE, в нем можно сделать SET NEW.date := now();Ничем не оправдано. Остальное - см. выше. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2013, 12:02:05 |
|
||
|
2 поля timestamp или 2 поля datetime
|
|||
|---|---|---|---|
|
#18+
Игорь В.П., текущее время пусть программа вычисляет, а mysql только хранит, играть в таймзоны тоже не советую- проблем и непоняток потом много всплывает, итого: все времена хранить в UTC, ОС сервака тоже лучше настроить на эту таймзону, с таймзонами играть только при выводе-вводе, ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2013, 14:22:46 |
|
||
|
|

start [/forum/topic.php?fid=47&msg=38493115&tid=1835581]: |
0ms |
get settings: |
8ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
28ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
30ms |
get tp. blocked users: |
1ms |
| others: | 208ms |
| total: | 306ms |

| 0 / 0 |
