Обработка часовых поясов от javascript до MySQL до javascript, от MS SQL до javascript

Я использую NodeJS / javascript для определения текущей даты, которая имеет часовой пояс системы. Теперь я хочу вставить эту дату в MySQL с UTC + 0. После этого я хочу снова выбрать эту дату с помощью NodeJS / javascript из MySQL с помощью UTC + 0 и вставить ее сейчас в MS SQL, где я хочу, чтобы она снова сохранялась как UTC + 0. В конце я снова выбираю с помощью NodeJS / javascript, но на этот раз из MS SQL, а также хочу, чтобы дата на этот раз находилась в часовом поясе, который используется прямо сейчас в системе, где бы я ни находился в будущем.

Вот пример: На 01.01.2018 15:00:00 UTC + 1 (немецкое зимнее время) я хочу, чтобы он хранился в обеих базах данных с UTC + 0. Когда наступает лето и часовой пояс моей системы меняется на UTC + 2 (немецкое летнее время), или я переезжаю в другую страну, например, UTC-5 Я хочу получить дату из MS SQL для преобразования в часовой пояс, который моя система использует автоматически.

Итак, вопросы:

  • Как мне вставить дату из NodeJS с часовым поясом системы в MySQL с UTC + 0?
  • Как я могу выбрать эту дату, чтобы я мог вставить ее с помощью NodeJS в MS SL и там тоже было UTC + 0?
  • Как я могу выбрать дату из MS SQL с помощью NodeJS, чтобы снова был часовой пояс системы?

Дополнительная информация: У меня есть две программы на NodeJS, которые общаются друг с другом. первый (клиент) вставляет дату в свою базу данных MySQL и отправляет эту дату также в серверное приложение. Причина, по которой он вставляет его в свою собственную базу данных MySQL, заключается в целях синхронизации, когда сервер не работает, чтобы получить их в другой раз. Когда сервер получает даты от клиентов, они должны храниться в базе данных MS SQL сервера. администраторы сервера могут экспортировать эти даты в Excel, когда захотят. но даты должны быть преобразованы из даты в MS SQL (UTC + 0) в часовой пояс системы серверов, чтобы в файле Excel дата находилась в часовом поясе системы вместо UTC + 0

Вы имеете в виду, что когда наступит переход на летнее время, вам понадобится автоматическое преобразование часового пояса? Немного дополнительных разъяснений может помочь: насколько активно участвует пользователь, будет ли пользователь запускать этот запрос или вы ищете работу демона сервера?

Mavi Domates 18.12.2018 14:41

База данных MySQL находится на стороне клиента, и я хочу отправить эти даты с помощью NodeJS на сервер с базой данных MS SQL. Даты в базе данных MS SQL будут позже экспортированы в файл Excel на стороне сервера с часовым поясом серверной системы.

T. Yueksel 18.12.2018 14:53

Что вы имеете в виду, что ваш MySQL находится на стороне клиента? Можете ли вы описать проблему с точки зрения пользователя, в настоящее время это выглядит как проблема XY.

Mavi Domates 18.12.2018 14:56

я обновил вопрос выше

T. Yueksel 18.12.2018 15:08
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
4
1 887
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

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

How can I insert my date from NodeJS with the systems time zone to MySQL with UTC+0?

Вы получаете системный часовой пояс, используя new Date() - чтобы преобразовать его в формат UTC, который MySQL поймет, вы можете сделать new Date().toISOString()

Чтобы сохранить это значение в MySQL, вам понадобится поле DateTime. Просто вставка этого значения должна работать, но если это не просто синтаксический анализ, это будет дата.

How can I select this date, so that I can insert it with NodeJS into the MS SQL and it's UTC+0 there too?

Ну, вы вставили его в стандартном формате, который всегда UTC + 0. Вы просто выбираете его и вставляете так же.

How can I select the date from MS SQL with NodeJS so that it has the systems time zone again?

Итак - у вас есть поле DateTime в MS SQL, которое вы будете запрашивать через Node.JS - поле находится в UTC + 0, и вы хотите получить это время соответственно для часового пояса вашего сервера?

Что ж, если вы используете new Date().getTimezoneOffset(), это должно дать вам смещение вашего часового пояса. Так должно получиться примерно так:

var date = MSSQLWrapper.someOperation('select d_field from ...');
var offset = new Date().getTimezoneOffset(); // Your offset
date.setHours(date.getHours() + offset); // Add your offset
console.info(date) // your aligned date.

Редактировать

Если вы хотите изменить часовой пояс при выборе из SQL, вы можете использовать В ЧАСОВОЙ ПОЯС

SELECT your_date from your_table   
AT TIME ZONE 'Eastern Standard Time' AS my_new_date

Вы можете передать название часового пояса в запросе со стороны сервера.

или, в качестве альтернативы, вы можете проверить TODATETIMEOFFSET

В этом вопросе также есть несколько хороших примеров: Преобразование значения datetime из одного часового пояса в часовой пояс UTC с помощью запроса sql

Есть ли способ обрабатывать преобразования в запросе sql, чтобы я уже выбрал правильный часовой пояс? Другой вопрос: когда я вставляю в MySQL, MySQL автоматически конвертирует дату в UTC, и если да, то в каком часовом поясе она отображается, когда я выбираю дату?

T. Yueksel 18.12.2018 16:13

Спасибо, но вы явно ввели восточное стандартное время, но это может быть восточное летнее время или даже другой часовой пояс. Вот почему я хочу, чтобы он совпадал с часовым поясом системы.

T. Yueksel 18.12.2018 16:24

@ T.Yueksel Я понимаю - альтернативой было бы передать это имя в запросе с вашего сервера при запросе (это если вы хотите выполнить преобразование в своем SQL, а не в своем коде) В противном случае я не думаю, что вы есть другая альтернатива, кроме как выполнить преобразование в коде (что нормально)

Mavi Domates 18.12.2018 16:26

Конечно! @ T.Yueksel Я был бы признателен за зеленую галочку, если это решит вашу проблему;)

Mavi Domates 18.12.2018 16:28

Используйте момент js и его Функция UTC. Таким образом, вам не нужно будет обрабатывать часовые пояса.

Привет

Доминик

Другие вопросы по теме