第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

在select語句中將Datetime列從UTC轉(zhuǎn)換為本地時間

在select語句中將Datetime列從UTC轉(zhuǎn)換為本地時間

DIEA 2019-08-30 16:28:42
我正在做一些SQL選擇查詢,并希望將我的UTC日期時間列轉(zhuǎn)換為本地時間,以便在我的查詢結(jié)果中顯示為本地時間。注意,我不希望通過代碼進行此轉(zhuǎn)換,而是在我對數(shù)據(jù)庫進行手動和隨機SQL查詢時。
查看完整描述

3 回答

?
慕尼黑的夜晚無繁華

TA貢獻1864條經(jīng)驗 獲得超6個贊

您可以在SQL Server 2008或更高版本上執(zhí)行以下操作:


SELECT CONVERT(datetime, 

               SWITCHOFFSET(CONVERT(datetimeoffset, 

                                    MyTable.UtcColumn), 

                            DATENAME(TzOffset, SYSDATETIMEOFFSET()))) 

       AS ColumnInLocalTime

FROM MyTable

你也可以做一些不那么冗長的事情:


SELECT DATEADD(mi, DATEDIFF(mi, GETUTCDATE(), GETDATE()), MyTable.UtcColumn) 

       AS ColumnInLocalTime

FROM MyTable

不管你做什么,不要使用-減去日期,因為該操作不是原子操作,你會偶爾得到應有的種族系統(tǒng)日期時間與當?shù)氐娜掌跁r間之間的條件不確定的結(jié)果在不同的時間被檢查(即非原子) 。


查看完整回答
反對 回復 2019-08-30
?
哆啦的時光機

TA貢獻1779條經(jīng)驗 獲得超6個贊

我沒有發(fā)現(xiàn)這些示例中的任何一個有助于將日期時間存儲為UTC到指定時區(qū)的日期時間(不是服務器的時區(qū),因為Azure SQL數(shù)據(jù)庫以UTC身份運行)。這就是我處理它的方式。它并不優(yōu)雅,但它很簡單,無需維護其他表格即可為您提供正確的答案:


select CONVERT(datetime, SWITCHOFFSET(dateTimeField, DATEPART(TZOFFSET, 

dateTimeField AT TIME ZONE 'Eastern Standard Time')))


查看完整回答
反對 回復 2019-08-30
?
繁花不似錦

TA貢獻1851條經(jīng)驗 獲得超4個贊

如果您需要服務器位置以外的轉(zhuǎn)換,此功能允許您傳遞標準偏移量并記錄美國夏令時:


-- =============================================

-- Author:      Ron Smith

-- Create date: 2013-10-23

-- Description: Converts UTC to DST

--              based on passed Standard offset

-- =============================================

CREATE FUNCTION [dbo].[fn_UTC_to_DST]

(

    @UTC datetime,

    @StandardOffset int

)

RETURNS datetime

AS

BEGIN


    declare 

        @DST datetime,

        @SSM datetime, -- Second Sunday in March

        @FSN datetime  -- First Sunday in November


    -- get DST Range

    set @SSM = datename(year,@UTC) + '0314' 

    set @SSM = dateadd(hour,2,dateadd(day,datepart(dw,@SSM)*-1+1,@SSM))

    set @FSN = datename(year,@UTC) + '1107'

    set @FSN = dateadd(second,-1,dateadd(hour,2,dateadd(day,datepart(dw,@FSN)*-1+1,@FSN)))


    -- add an hour to @StandardOffset if @UTC is in DST range

    if @UTC between @SSM and @FSN

        set @StandardOffset = @StandardOffset + 1


    -- convert to DST

    set @DST = dateadd(hour,@StandardOffset,@UTC)


    -- return converted datetime

    return @DST


END


GO


查看完整回答
反對 回復 2019-08-30
  • 3 回答
  • 0 關注
  • 1514 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網(wǎng)微信公眾號