我需要在SQL查询(SQL Server 2012)中做一些日期到字符串的转换。我熟悉CONVERT(DATETIME,myString,127)
函数,但这将给我一个在末尾附加时区的字符串。我不想在字符串中显示任何时区信息,但我想要显示以UTC表示的时间。
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对类型转换有更广泛的支持。