Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 如何使gatedate()在ms sql server中适用于不同的时区_Sql Server_Timezone - Fatal编程技术网

Sql server 如何使gatedate()在ms sql server中适用于不同的时区

Sql server 如何使gatedate()在ms sql server中适用于不同的时区,sql-server,timezone,Sql Server,Timezone,好的,我的数据库中有一个表,列为“订单放置日期”。此列的默认值设置为getdate(),由于my db是为印度标准时间(IST GMT+05:30)配置的,因此插入该列的值将是印度的当前时间 现在我有了另一个“时区”表,其中列“时区代码”保存了用户的时区代码 我想要的是,在“Order\u Placed\u Date”列中,而不是插入IST的当前时间,gatedate()应该为存储在“time\u Zone”表中的时区代码插入当前时间 假设“时区代码”列具有值东部标准时间,则在“顺序放置日期”列

好的,我的数据库中有一个表,列为“订单放置日期”。此列的默认值设置为getdate(),由于my db是为印度标准时间(IST GMT+05:30)配置的,因此插入该列的值将是印度的当前时间

现在我有了另一个“时区”表,其中列“时区代码”保存了用户的时区代码

我想要的是,在“Order\u Placed\u Date”列中,而不是插入IST的当前时间,gatedate()应该为存储在“time\u Zone”表中的时区代码插入当前时间

假设“时区代码”列具有值东部标准时间,则在“顺序放置日期”列中,插入的时间应为EST的当前时间,而不是IST


SQLServer2008中有一个函数返回两个时区之间的偏移量,但有点困惑,在我的场景中如何使用它

SQL Server没有此功能。考虑在应用程序代码中执行时区调整。
例如,如果您在应用程序代码中使用.NET,那么您可以使用
TimeZoneInfo
类。

正如Matt所建议的那样,我在我的c代码中进行日期计算,然后在Order Placed\u date列中插入计算值。我编写了以下函数

public string getDateForProvideTimeZone(string TimeZoneId)
{
            TimeZoneInfo _timeZoneInfo;
            DateTime _dateTime;

            _timeZoneInfo = TimeZoneInfo.FindSystemTimeZoneById(TimeZoneId);
            _dateTime = TimeZoneInfo.ConvertTime(DateTime.Now, _timeZoneInfo);
            return _dateTime.ToString("dd-MM-yyyy HH:mm:ss");
}