Ich versuche, eine Abfrage zu schreiben, die Datensätze zurückgibt, die zwischen zwei Daten (jeweils mit einem Cutoff im TIME-Format) fallen. Bisher habe ich folgendes:Convert LOCAL TIME-Datentyp Wert in UTC-Zeit
Zum Beispiel:
SELECT
T.CustomerName,
T.MoneyToTransfer
FROM dbo.[Transfer] T
WHERE T.CreatedDate BETWEEN '2016-05-10 03:00:00.0000000' AND '2016-05-11 03:00:00.0000000'
jedoch die Grenzzeit 03: 00: 00,0000000 ist nur ein Platzhalter für, wie ich denke, dass die Abfrage formatiert werden muss - die Zeit braucht, um zu sein aus einer anderen Tabelle 'TransferSubscriber' aus dem Feld 'Cutoff' als Datentyp TIME abgerufen. Das Problem ist, dass dieses Cutoff-Feld in der Tabelle TransferSubscriber in der LOCAL-Zeit (in einem TIME-Datentyp) gespeichert wird. Ich muss diese ZEIT in UTC umwandeln und sie in meine BETWEEN-Anweisung im TIME-Teil des Vergleichs einfügen (wo die 03: 00: 00.0000000).
Ich habe folgendes geschrieben, die Probleme verketten die Datums- und Zeitvariablen in einem hat:
DECLARE @startDate DATE = (SELECT CONVERT(VARCHAR, '2016-07-13', 110))
DECLARE @Cutoff AS TIME(7) = (SELECT TOP 1 S.CutoffTime FROM Subscriber.dbo.TransferSubscriber S WHERE ID = 10)
DECLARE @CutoffUTC TIME = (SELECT DATEADD(second,DATEDIFF(second, GETDATE(), GETUTCDATE()), @Cutoff))
DECLARE @StartDateFinal = @startDate + @CutoffUTC
@StartDateFinal wirft Fehler: „Operand Datentyp Datum ist ungültig für Operator add“
Ich bin sicher, dass es eine bessere Möglichkeit gibt, lokale TIME in UTC-Zeit zu konvertieren, und verwenden Sie es, um zwei DATETIME-Felder zu vergleichen.
Jede Hilfe wäre großartig!