首页 > 解决方案 > 为什么不从数据库小时和分钟显示不完全相同?

问题描述

我在名为 CarrierDeliveryStartDateHour 的数据库中有一个字段,我想要实现的是根据时间显示下午 3:45 或上午。

SELECT FORMAT(getdate(), 'hh:mm tt') AS CarrierDeliveryStartDateHour

我正在使用这个查询。但问题是当我从数据库中进行查询时,它显示了错误的时间,例如,2:00 AM 而应该显示 3:45 我认为我们应该应用时区和偏移量。任何想法,请

标签: sql-server

解决方案


CREATE FUNCTION [dbo].[sfUtcToLocal] (@UtcDatetime DATETIMEOFFSET, @IDTimeZone typIDTimeZone) 返回 DATETIMEOFFSET 作为开始

DECLARE @UTCoffset          typUTCoffset

SELECT @UTCoffset = COALESCE(ttzd.UTCoffset, ttz.UTCoffset)
FROM tabTimeZone AS ttz
    LEFT JOIN tabTimeZoneDST AS ttzd ON ttzd.IDTimeZone = ttz.IDTimeZone
        AND @UtcDatetime BETWEEN ttzd.StartDate AND ttzd.EndDate
WHERE ttz.IDTimeZone = @IDTimeZone
    AND ttz.[Deleted] = 0

RETURN ISNULL(SWITCHOFFSET (@UtcDatetime, @UTCoffset), @UtcDatetime)

结尾


推荐阅读