2016-09-24 2 views
0

Когда я запускаю ниже запроса,Почему MySql возвращает время в AM вместо PM?

SELECT DATE_FORMAT(CURRENT_TIMESTAMP, '%Y-%m-%d %h:%i:%s %p') 

это вернуть отметки времени

2016-09-24 05:16:53 AM 

но 5:16:53 PM в моем компьютере.

Я побежал ниже запросов, а также чтобы убедиться, что часовой пояс установлен в СИСТЕМЫ

SELECT @@global.time_zone; 
SELECT @@session.time_zone; 

Что может быть проблема? Я хочу получить 2 часа старых записей, но из-за этой проблемы я застрял.

Ниже мой запрос,

SELECT * FROM myTable WHERE NOW() < DATE_ADD(my_field_time,INTERVAL 2 HOUR) 

Это не будет работать правильно, как СЕЙЧАС находится за 12 часов.

Update: сервер Mysql на моем компьютере, версия 5.5.28, часовой пояс SYSTEM сообщается на сервере MySQL ОС: Windows 10

+0

Где находится сервер mysql? на вашем ПК? Какую операционную систему и версию mysql вы используете? какой часовой пояс вашего ПК и какой часовой пояс сообщается mysql? Пожалуйста, отредактируйте свой вопрос с подробностями. –

+0

@sikander попробуйте SELECT TIMEDIFF (CURRENT_TIMESTAMP, UTC_TIMESTAMP) и расскажите, что вы получаете –

ответ

1

Попробуйте

SET time_zone = yourtimezone //eg '+05:30' 

После этого попробуйте ваш запрос

SELECT DATE_FORMAT(CURRENT_TIMESTAMP, '%Y-%m-%d %h:%i:%s %p') 

Пожалуйста, обратите внимание, SET time_zone = yourtimezone будет работать только для текущей сессии.

Чтобы узнать разницу между текущей датой-временем в вашей сессии часового пояса и текущее DateTime в формате UTC, используйте следующий запрос

SELECT TIMEDIFF(CURRENT_TIMESTAMP, UTC_TIMESTAMP) 

Если вам нужен только конкретный обходной путь для вашего запроса, как сейчас находится за 12 часов, а затем попробуйте поискать

SELECT * FROM myTable WHERE NOW() + INTERVAL 12 HOUR < DATE_ADD(my_field_time,INTERVAL 2 HOUR) 
Смежные вопросы