如何将.NET Ticks转换为不带偏移量的中部时间
将.NET Ticks转换为中部时间(无时区偏移)
要得到不带时区偏移的中部时间(格式为yyyy-MM-dd HH:mm:ss),可以通过以下两种方式调整你的SQL语句:
方法1:转换为datetime类型(保留日期时间结构)
CAST( CAST(([ticks column] - 599266080000000000) / 10000000 / 60 / 60 / 24 AS datetime) AT TIME ZONE 'UTC' AT TIME ZONE 'Central Standard Time' AS datetime)
逻辑说明:
- 先将Ticks转换为SQL
datetime类型,该值对应UTC时间 - 用
AT TIME ZONE 'UTC'明确标记该时间为UTC时区 - 通过
AT TIME ZONE 'Central Standard Time'转换为中部时间(此时结果为带时区偏移的datetimeoffset类型) - 最后
CAST AS datetime去掉时区偏移,得到纯中部时间的datetime值
方法2:直接格式化为指定字符串
如果需要直接输出yyyy-MM-dd HH:mm:ss格式的字符串,使用FORMAT函数:
FORMAT( CAST(([ticks column] - 599266080000000000) / 10000000 / 60 / 60 / 24 AS datetime) AT TIME ZONE 'UTC' AT TIME ZONE 'Central Standard Time', 'yyyy-MM-dd HH:mm:ss' )
关键注意点:
Central Standard Time会自动识别夏令时(CST/CDT),无需手动调整时区偏移- 针对你提供的Ticks值
638924688000000000,两种方法都会返回2025-09-03 00:00:00
内容的提问来源于stack exchange,提问作者Sam Clark
相关产品推荐
相关产品推荐

