【问题标题】:SQL server Indian Timezone DateSQL 服务器印度时区日期
【发布时间】:2018-11-24 06:14:37
【问题描述】:

我使用的是 SQL Server 2008 R2,(位于美国)

我有一个 SQL 作业来向客户发送电子邮件通知。根据他们的生日,我从数据库中获取数据如下:

SELECT  CustomerId,
        CustomerName,
        Email,
        Dob,
FROM    Customers
WHERE   DAY(Dob) = DAY(GETDATE())
        AND MONTH(Dob) = MONTH(GETDATE())

作业安排在 IST 上午 9:30。

这里的问题是,由于服务器位于美国,并且作业在上午 9:30 IST 运行,它每天发送两次相同的电子邮件。

我该如何处理这种情况?有什么方法可以处理 TimeZone 吗?请帮帮我。

【问题讨论】:

    标签: sql sql-server-2008-r2 timezone-offset sql-job


    【解决方案1】:

    你可以试试下面

       SELECT  CustomerId,
                CustomerName,
                Email,
                Dob,
        FROM    Customers
        WHERE   DAY(Dob) = DAY(cast(switchoffset(todatetimeoffset(GETDATE(), '-06:00'), '+05:30') as datetime))
                AND MONTH(Dob) = MONTH(cast(switchoffset(todatetimeoffset(GETDATE(), '-06:00'), '+05:30') as datetime))
    

    【讨论】:

    • AT TIME ZONE 是 SQL Server 2016 的功能。我使用的是 SQL Server 2008 R2
    • @55SK55,修改你的问题
    • @55SK55,是的,它是 getdate()
    • 这假定 -6 始终是正确的偏移量。如果服务器位于使用夏令时的时区,则不会,这很可能。您应该获取 UTC 日期(使用 SYSUTCDATETIMEGETUTCDATE),并在其中添加 +5:30。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-30
    • 1970-01-01
    • 2013-09-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多