您有两种选择:
- 将调整后的邮件操作时间存储到每个用户的数据库中。然后,只需将服务器时间与存储的时间进行比较即可。为避免混淆和可移植性问题,我将所有时间都存储在UTC中。因此,在SERVER_UTC_TIME()== storedUtcTime时发送邮件。
- 将每个邮件操作的本地时间存储到数据库中,然后即时进行转换。当SERVER_UTC_TIME()== TO_UTC_TIME(storedLocalTime,userTimeZone)时发送邮件。
您应该决定什么对您的应用程序最有意义。例如,如果所有用户的邮寄时间始终相同,则选择选项(2)会更有意义。如果事件时间可以在用户之间甚至每个用户之间变化,那么如果您选择选项(1),则可以使开发和调试更加容易。无论哪种方式,您都需要知道用户的时区。
*这些函数调用显然是伪的,因为我不知道它们在T-SQL中的调用,但是它们应该存在。



