radiomagazin 0 Posted June 28, 2020 Report Share Posted June 28, 2020 Hallo Zusammen, ich habe die folgende Beispieltabelle. Kann mir jemand sagen wie ich das Datum des Timespan ermitteln kann ?? MFG Ingo Feld [Datum] Feld [Erinnerung vorher] 2020-06-29 01:07:51 NULL 2020-06-29 01:07:51 NULL 2020-06-29 01:07:51 NULL 2020-06-29 01:07:51 NULL 2020-06-29 01:07:51 -36000000000 2020-06-29 01:07:51 NULL 2020-06-29 01:07:51 -36000000000 2020-06-29 01:07:51 NULL 2020-06-29 01:07:51 NULL 2020-06-29 01:07:51 NULL 2020-06-29 01:07:51 -36000000000 2020-06-29 01:07:51 -72000000000 2020-06-29 01:07:51 NULL 2020-06-29 01:07:51 NULL 2020-06-29 01:07:51 324000000000 Quote Link to post
NilsK 1,220 Posted June 29, 2020 Report Share Posted June 29, 2020 Moin, die Frage verstehe ich nicht recht. Geht es darum, aus "2020-06-29 01:07:51" nur das Tagesdatum zu extrahieren? Dafür eignet sich die FORMAT-Funktion. [How to Format the Date & Time in SQL Server | Database.Guide]https://database.guide/how-to-format-the-date-time-in-sql-server/ [FORMAT (Transact-SQL) - SQL Server | Microsoft Docs]https://docs.microsoft.com/en-us/sql/t-sql/functions/format-transact-sql?view=sql-server-ver15 Gruß, Nils Quote Link to post
radiomagazin 0 Posted June 29, 2020 Author Report Share Posted June 29, 2020 Das erste Datum habe ich nur als Beispiel genommen. In dem Feld namens Datum stehen richtige Datumsangaben eines Termines. In einem 2. Feld Erinnerung vorher steht eine Zahl wie oben in der Tabelle zu sehen ist. Ich möchte aber anstelle dieser Zahl das Datum / Uhrzeit der Erinnerung haben. Daher brauche ich eine Formel, die mir z.B. in der Zeile 5 von einem Datum das z.B. 2020-06-29 sein kann die Erinnerung von -36000000000 abzieht und ich mittels Forme dann im 3. Feld (z.B. Erinnerung:" den Wert 27.06.2020 stehen habe statt der -xxxxxxxx Jetzt klarer geworden ? Quote Link to post
NilsK 1,220 Posted June 29, 2020 Report Share Posted June 29, 2020 (edited) Moin, nein, das verstehe ich nicht. Wie zieht man eine Erinnerung von einer großen negativen Zahl ab? Du müsstest das schon etwas vollständiger erklären. Nur mal so ins Blaue geschossen: [DATEADD (Transact-SQL) - SQL Server | Microsoft Docs]https://docs.microsoft.com/en-us/sql/t-sql/functions/dateadd-transact-sql?view=sql-server-ver15 Aber trotzdem wäre es nett, wenn du dich um Verständlichkeit deiner Fragen bemühst. Gruß, Nils Edited June 29, 2020 by NilsK Quote Link to post
radiomagazin 0 Posted June 29, 2020 Author Report Share Posted June 29, 2020 OK Mal Ganz Einfach: Feld 1 = 2020-06-29 08:00:00.000 -> steht für den Termin am 29.06.2020 um 08:00 Uhr !!! Feld 2 = -36000000000 -> Steht so in der Tabelle für die Erinnerung 1 Stunde vorher -72000000000 -> Steht für 2 Stunden vorher Das Feld 3 das ich gerne berechnet hätte würde somit 29.06.2020 um 07:00 Uhr ergeben !!! Beispiel aus der Software: und aus SQL Quote Link to post
NilsK 1,220 Posted June 29, 2020 Report Share Posted June 29, 2020 Moin, ah, siehste. Geht doch. Nächstes Mal liefere die Informationen doch gleich. Dann kannst du dir auch die Ausrufezeichen sparen. Für dein Vorhaben sollte DATEADD() passen, siehe Link oben. Sofern ich es richtig überschlage und es sich bei "timespan" um Nanosekunden handelt, kannst du das direkt als Parameter angeben, sonst musst du den Wert eben noch umrechnen. Gruß, Nils 1 Quote Link to post
radiomagazin 0 Posted June 29, 2020 Author Report Share Posted June 29, 2020 Super Idee, aber es funktioniert nicht. Kann ja jeder selber mal ausprobieren: SELECT DATEADD(NS,-36000000000, CONVERT(nvarchar, GETDATE(), 20)) wobei CONVERT(nvarchar, GETDATE(), 20) ja für das jetzige Datum und Zeit steht. ---> Arithmetischer Überlauffehler beim Konvertieren von expression in den int-Datentyp. Quote Link to post
Dukel 353 Posted June 29, 2020 Report Share Posted June 29, 2020 (edited) Nutzt du Nanosekunden? SELECT DATEADD(MS,-36000000000, CONVERT(nvarchar, GETDATE(), 20)) Oder versuche mal: SELECT DATEADD(MS,-36000000000, GETDATE()) EDIT: Oder millisecond statt MS. Die ganzen Beispiele sind mit den ausgeschriebenen texten: https://docs.microsoft.com/en-us/sql/t-sql/functions/dateadd-transact-sql?view=sql-server-ver15 Edited June 29, 2020 by Dukel Quote Link to post
radiomagazin 0 Posted June 29, 2020 Author Report Share Posted June 29, 2020 ok ich habe es gelöst: SELECT DATEADD(SECOND, -36000000000/10000000, CAST('2020-06-29' as Datetime2)) Quote Link to post
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.