Tsql 如何获取值为00-00的datetime变量以及给定时区的月前变量?

Tsql 如何获取值为00-00的datetime变量以及给定时区的月前变量?,tsql,datetime,Tsql,Datetime,我正在寻求帮助,以便在T-SQL中完成以下任务: 我有一个时区,我需要计算一个UTC日期时间,它是当前日期减去一个月,但在给定的时区中有0小时0分钟。这就是你需要的吗 Select Cast(Floor(Cast(DateAdd(month, -1, getutcdate()) as float)) as datetime) SQL Server 2008及更高版本提供了包含时区的datetimeoffset类型。您可以使用SWITCHOFFSET函数更改时区,使用DATEADD函数将结果值增

我正在寻求帮助,以便在T-SQL中完成以下任务: 我有一个时区,我需要计算一个UTC日期时间,它是当前日期减去一个月,但在给定的时区中有0小时0分钟。

这就是你需要的吗

Select Cast(Floor(Cast(DateAdd(month, -1, getutcdate()) as float)) as datetime)

SQL Server 2008及更高版本提供了包含时区的datetimeoffset类型。您可以使用SWITCHOFFSET函数更改时区,使用DATEADD函数将结果值增加-1个月。然后可以转换为日期类型以消除时间部分

select cast(DATEADD(month,-1,todatetimeoffset(GETUTCDATE(),'+02:00')) as DATE)

这是否返回UTC日期为上午0点。?我需要一个给定时区的凌晨0点。它返回UTC日期,请一个月假,然后去掉时间部分,这样它将返回类似这样的内容
2010-05-24 00:00:00.000
我需要准确的UTC日期时间,当转换到给定时区时,这是给定一天的开始。例如,2010-05-24 02:00:00.000将是我需要的结果,如果时区为-02:00。啊,对不起,我误解了你的问题。如果我按照你的建议缩短时间部分,这是凌晨0点吗。在给定的时区?我需要准确的UTC日期时间,当转换为给定时区时,它是给定日期的开始。日期类型没有时间部分。如果将其转换回其他日期类型(例如DATETIME),则其时间部分为00:00。datetime、date、datetime2和datetimeoffset之间的转换是隐式的,这意味着您可以将日期值指定给datetime变量或将其存储在datetime列中,并且它将自动获取00:00时间部分。请注意,只有datetimeoffset2具有时区。如果您希望生成的日期仅为特定时区的00:00,则应使用最终ToDateTimeOffset将日期转换为所需时区。我还不知道如何将日期时间从给定时区切换到UTC。你能解释一下吗?