Azure移动服务,如何仅更新或忽略更新某些列

时间:2016-08-07 03:35:26

标签: node.js azure azure-sql-database azure-mobile-services

我在表中有一个项目并更新了一些列值并将其更新到数据库中。 但是为什么这个Datetimeoffset列会自动更改为另一个时区?

  1. 这是DB
  2. 中的项目

    Record at first time

    1. 使用javascript后端阅读和更新
    2. 
      
      request.service.tables.getTable('Ticket')
      .where({ id: ticketId }).read({
        systemProperties: ['__createdAt', '__updatedAt'],
        success: function (result) {
          if (result.length === 0) {
            console.log("ticket does not exist");
            response.send(statusCodes.NOT_FOUND, { message: "ticket does not exist" });
          }
          //Exists; update it
          else {
            // do update some column
            //...
            //...
            request.service.tables.getTable('Ticket').update(result[0]);
            }
      
      
      

      1. 我不会更改DatetimeOffset列的值,但会更改。
      2. enter image description here

        如何忽略更新呢?

2 个答案:

答案 0 :(得分:1)

基本上,DateTimeOffset值在服务器端被解释为JavaScript Date对象,因此它们没有关于偏移的任何信息(在JS日期中表示为自“Unix 0”以来的数毫秒,1970 / 01/01:00:00:00 UTC)结果是偏移在翻译中丢失了,这是一个问题 =>因此,日期时间偏移列应采用UTC格式。

我找到了一篇关于此问题的帖子: https://blogs.msdn.microsoft.com/carlosfigueira/2013/05/13/preserving-date-time-offsets-in-azure-mobile-services/

答案 1 :(得分:1)

您可以看到实际时间值是等效的,第一个包含时区偏移量。您应该能够在客户端上调用ToLocalTime以将日期调整回本地时间(或者等效于您的客户端平台)。