2014-03-27 29 views
1

我需要在SQL查詢(SQL Server 2012)中進行一些日期到字符串的轉換。我熟悉CONVERT(DATETIME,myString,127)函數,但這會給我一個字符串,並在最後附加一個時區。我不想在字符串中顯示任何時區信息,但我希望顯示的時間以UTC表示。SQL查詢中Objective-C的setTimeZone等價物

例如,在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查詢中獲得這種行爲?

回答

0

我發現了一些方法來做類似於wallyk在他的回答中提出的建議,但不幸的是它比SQL Server更復雜。對我而言,查詢結果保存爲DateTime並且稍後在調用查詢的代碼中轉換爲字符串變得更簡單。我懷疑其他人也會發現它更容易,因爲很多編程框架似乎比SQL更廣泛地支持類型轉換。

我會將其標記爲現在的答案,即使它沒有真正回答所述的問題。如果有人發佈簡單,優雅的方式在查詢本身中完成轉換權限,我會接受。

0

建立服務器連接時,可以將每個客戶端的時區設置爲whatever you want

set time_zone = 'US/Pacific' 

如果你經常使用不同的時區,有convert_tz() function

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服務器標籤嗯,這裏是MySQL的答案。)

+0

我做了一些挖掘,不幸的是,事實證明這樣做並不像SQL Server那樣簡單。不過謝謝。 – GeneralMike