SELECT是否考虑WHERE语句中的时区修改?

时间:2014-12-15 23:37:46

标签: sql sql-server sql-server-2008

event_time以UTC格式存储在数据库中。

试图在月末附近考虑那些""小时,以确保所有结果都在本地时间,而不是UTC,这是我的代码的简化版本:

SELECT
MONTH(event_time) AS 'month'
FROM
<table1>
INNER JOIN
<table2> ON <table1>.id = <table2>.id
WHERE
<table1>.event_time BETWEEN ToDateTimeOffset(@StartDate, @Offset) AND ToDateTimeOffset(@EndDate, @Offset)

使用此功能时,MONTH(event_time)会根据UTC或EST(偏移量设置为)转换月份,还是必须使用MONTH(ToDateTimeOffset(event_time, @Offset))

1 个答案:

答案 0 :(得分:1)

MONTH(event_time)将花费#34;而没有偏移&#34;零件。但是你最好不要计算UTC的月初始和星期几,然后进行>=, <查询。索引也可以更好地使用。