Как Правильно Преобразовать или Запросить Диапазон дат для направляющих / MySQL DateTime Column

Из того, что я могу сказать, есть две причины, по которым вы не можете получить доступ к серверу.

Во-первых, вы не перенаправляете никакие порты из контейнера на хост. Вы должны включить аргумент -p 80:80 в свою команду docker run.

Во-вторых, вы пытаетесь прослушивать, как я полагаю, IP-адрес самого контейнера, который не является статическим (по умолчанию). В конфиге nginx вы должны заменить listen 172.17.0.2:80; на listen 0.0.0.0:80;.

После этих двух модификаций вы сможете получить доступ к вашему серверу.

Другой подход (но не рекомендуется) заключался бы в запуске контейнера с параметром --network=host. Таким образом, сеть хоста фактически видна изнутри контейнера. В этом случае вам нужно будет только настроить конфигурацию nginx для прослушивания действительного адреса.

Однако, если проблема не устранена, хорошим подходом было бы запустить docker exec -it {$container_id} bash во время работы контейнера и посмотреть, сможете ли вы получить доступ к серверу из самого контейнера. Это будет означать, что сервер работает правильно, но по другим причинам порт неправильно перенаправляется на хост.

6
задан Streamline 11 March 2009 в 22:17
поделиться

4 ответа

Я знаю, что это старый вопрос, но в ответ на запрос Streamlines о CONVERT_TZ:

Если у вас не загружены именованные таблицы часовых поясов mySQL (что маловероятно при обычной установке) , вам нужно ввести часовые пояса как смещение от UTC.

CONVERT_TZ(status_changes.created_at, '+00:00', '+08:00') between '2009-01-24' and '2009-03-12')
4
ответ дан 8 December 2019 в 05:58
поделиться

Если Вы не используете find_by_sql, а скорее используйте a find с a :conditions пункт, которые позволяют нам направляющие, делает замены, он преобразует все автоматически.

Model.find :all, 
  :conditions => ["created_at between ? and ?", start_date, end_date]

Худший случай, если направляющие перепутан датами, можно преобразовать их во времена, и он должен играть приятно:

Model.find :all, 
  :conditions => ["created_at between ? and ?", 
                   start_date.to_time, end_date.to_time]
7
ответ дан 8 December 2019 в 05:58
поделиться

MySQL имеет функцию CONVERT_TZ, которая берет дату и время и преобразовывает ее от одного часового пояса до другого. Вы могли создать свой запрос для преобразования из хранимой суммы (UTC) к локальному часовому поясу (PST).

CONVERT_TZ(status_changes.created_at,'UTC',?) between ? and ?, 'PST, '2009-01-24', '2009-03-10'
1
ответ дан 8 December 2019 в 05:58
поделиться

Я попробовал ответить Яна, но это не сработало. Rails правильно обрабатывает часовой пояс при сохранении и загрузке записей, но, похоже, не делает то же самое с параметрами запроса. Обратите внимание, что приложение, над которым я работаю, находится в Rails 2.1.1, так что с тех пор ситуация, возможно, несколько улучшилась.

С помощью одной небольшой настройки я смог заставить решение Яна работать: получить значение времени в часовом поясе UTC с помощью метода getutc, а затем передать его в качестве параметра. Это также не должно причинить вреда в любых более поздних версиях Rails, которые могут правильно обрабатывать зону временных параметров, поскольку время в формате UTC не изменяется с помощью getutc, а изменяется только часовой пояс.

0
ответ дан 8 December 2019 в 05:58
поделиться
Другие вопросы по тегам:

Похожие вопросы: