2015-03-02 5 views
1

привета я хочу, чтобы сохранить дату и время в соответствии восточное поясное время, моя sequelize модель:Отметки в sequelize 1.7.3

var objName= sequelize.define('tbl_name',{ 
     orders_id: { type: Sequelize.INTEGER, autoIncrement: true, primaryKey: true }, 
     customers_id:Sequelize.INTEGER,   
     date_purchased: { type: Sequelize.DATE, defaultValue: Sequelize.NOW }, 
     order_total:Sequelize.INTEGER, 


    }, 
    { 
     tableName: 'tbl_name', 
     timestamps: false 
    }); 

теперь я хочу, чтобы использовать метки время как-то в нем и хочу сохранить (Eastern Standard Время), может ли кто-нибудь вести меня, как я могу это сделать.

Примечание: Я использую mysql и sailsjs. Спасибо.

EDIT

также используются два следующих фрагментах, но затем он сохраняет 0000-00-00 00:00:00

date_purchased: { type: Sequelize.DATE, defaultValue: sequelize.literal("FROM_UNIXTIME(UNIX_TIMESTAMP() + (3600 * 2))") }, 

date_purchased: { type: Sequelize.DATE, defaultValue: sequelize.literal("(now() at time zone 'EST')") } 
+0

Вы хотите сохранить дату в восточное время, чтобы отобразить дату в восточное время. Я не хочу догадываться о вашем вопросе, но большинство дат сохраняется в формате UTC, а затем отображается в соответствующем часовом поясе. – Meeker

+0

Как вы используете sails.js с sequelize? sails.js использует Waterline ORM –

+0

@Meeker да, я хочу сохранить дату и время в EST –

ответ

0

Собираетесь ли вы хотите, чтобы манипулировать даты (сложение, вычитание, сравнение)? Если НЕ, то просто сохраните их как предварительно отформатированные строки.

В противном случае вы столкнетесь с проблемами с таким подходом к сохранению «восточного времени», которые находятся вне парусов. Помните, что пасхальное время - это то же самое, что и UTC, только со смещением, и это смещение изменяется в зависимости от того, если вы используете экономию дневного света или нет.

MySQL по умолчанию будет использовать системный часовой пояс внутренне, но можно определить другой часовой пояс для сервера MySQL во всем мире или даже за транзакцию. Тем не менее, MYSQL по-прежнему будет экономить время в UTC, все ваши MYSQL, которые вы будете говорить, должны трансформироваться во время чтения/записи, как если бы мы были в восточном часовом поясе.

Это может быть сложно при работе со многими переменными, такими как ваш сервер приложений, ваш адаптер db и, наконец, ваша БД.

Самым безопасным является сохранение всех дат в формате UTC (настройка сервера в системном времени UTC), а затем отображение их в правильном часовом поясе через прикладной уровень.

Вы должны спросить себя. «Откуда берутся мои даты». Все они генерируются в самой базе данных (например, ваш код выше)? Создаются ли они сервером приложений (например, парусами, создающими дату, а затем вставляя их), или датируются даты клиента (у браузеров есть свои проблемы с часовым поясом).

Если вы хотите манипулировать ими или сравнивать их, то ваши лучшие, чтобы ваши даты сохраняли UTC, а затем манипулировали часовым поясом при его отображении пользователю. Посмотрите время перехода на летнее время (оно меняется в эти выходные!).

Как это сделать, зависит от вашей настройки и ответа на многие из вопросов, которые я изложил выше.

Я знаю, что некоторое время назад я остановил использование методов Date/Time и вместо этого использовал integer для хранения всех моих дат с помощью UnixTimestamp. Затем я отформатирую это в правильный часовой пояс, прежде чем показывать клиенту. Это гарантирует, что мои даты не будут чрезмерно трансформированы независимо от того, какую базу данных я использую или где находится сервер. Это только личное предпочтение, но я считаю, что он поднял большую головную боль.

Смежные вопросы