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