Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Достъп до TimeZoneInfo от SQL 2005 Server

Току-що приключих с това в база данни SQL 2008.

Първо трябваше да настроя базата данни на надеждна и да проверя, че собственикът е правилен.

use [myDB]
go
alter database [myDB] set trustworthy on
go

exec sp_changedbowner 'sa'
go

След това създадох .NET решение

Imports System
Imports System.Data
Imports System.Data.SqlClient
Imports System.Data.SqlTypes
Imports Microsoft.SqlServer.Server
Imports System.Collections.ObjectModel
Imports System.Runtime.InteropServices

Partial Public Class StoredProcedures
    <Microsoft.SqlServer.Server.SqlProcedure()> _
    Public Shared Sub sp_ConvertTime(ByVal UTCTime As DateTime, ByVal ZoneID As String, <Out()> ByRef Output As DateTime)
    Dim sp As SqlPipe = SqlContext.Pipe

    Dim ConvertedTime As DateTime
    Dim tzUTC = TimeZoneInfo.FindSystemTimeZoneById("UTC")
    Dim tzNew = TimeZoneInfo.FindSystemTimeZoneById(ZoneID)

    ConvertedTime = TimeZoneInfo.ConvertTime(UTCTime, tzUTC, tzNew)

    Output = ConvertedTime
    sp.Send(ConvertedTime)

    ConvertedTime = Nothing
    tzUTC = Nothing
    tzNew = Nothing
    sp = Nothing

End Sub
End Class

Преди внедряването зададох нивото на разрешение на Небезопасно .

След това го внедрих, проверих изходния прозорец за грешки при изграждането и ги коригирах.

Ето SQL теста

DECLARE @UTCTime datetime
DECLARE @ZoneID varchar(21)
DECLARE @NewTime datetime

SET @UTCTime = GETUTCDATE()
SET @ZoneID = 'Central Standard Time'

exec sp_ConvertTime @UTCTime, @ZoneID, @NewTime OUTPUT
select @NewTime AS NewTime


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Преименувах колоната си, за да включва име на таблица. Защо вече не мога да го преименувам?

  2. Как работи ORIGINAL_DB_NAME() в SQL Server

  3. ODBC драйверът на SQL Server не предизвиква грешки

  4. Как да реферирам един CTE два пъти?

  5. PHP грешка при свързване с MS SQL база данни чрез PDO_DBLIB