sql server - 相当于 SQL 查询中 Objective-C 的 setTimeZone



我需要在SQL查询(SQL Server 2012)中做一些日期到字符串的转换。我熟悉CONVERT(DATETIME,myString,127)函数,但这将给我一个在末尾附加时区的字符串。我不想在字符串中显示任何时区信息,但我想要显示以UTC表示的时间。

例如,在Objective-C中,我可以这样做:
NSDate *myDate = [NSDate date];
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"yyyy-mm-dd HH:mm:ss"];
[formatter setTimeZone:[NSTimeZone timeZoneForSecondsFromGMT:0]];
NSString *myString = [formatter stringFromDate:myDate];

使用这段代码,我将得到一个不显示时区的字符串,但表示的时间将是UTC。是否有一种方法可以在SQL查询中获得这种行为?

当服务器连接建立后,您可以将每个客户端的时区设置为您想要的任何时区。

set time_zone = 'US/Pacific'

如果您经常使用不同的时区,则有convert_tz()函数:

mysql> SELECT CONVERT_TZ('2004-01-01 12:00:00','GMT','MET');
        -> '2004-01-01 13:00:00'
mysql> SELECT CONVERT_TZ('2004-01-01 12:00:00','+00:00','+10:00');
        -> '2004-01-01 22:00:00'  

(糟糕!刚刚注意到sql-server标记。下面是MySQL的答案

我找到了一些方法来做一些类似于wallyk在他的回答中建议的事情,但不幸的是,使用SQL Server要复杂得多。对我来说,它最终是更容易保持查询的结果作为DateTime,然后转换为字符串稍后在调用查询的代码。我怀疑其他人也会觉得这样更容易,因为许多编程框架似乎比SQL对类型转换有更广泛的支持。

我将把这个标记为现在的答案,即使它实际上并没有回答所述的问题。如果有人发布了一种简单、优雅的方法来在查询本身中进行转换,我将接受它。

相关内容

  • 没有找到相关文章

最新更新