2016-10-26 1 views
-1

So habe ich eine sehr spezifische Aufgabe. Ich führe einige SQL-Anweisungen aus, in denen es eine temporäre Tabelle gibt, die länderspezifische Datumsbereiche enthält.dynamisch ändern Daten in einer temporären Tabelle

z.B.

INSERT INTO #dateRange(durationDesc, contryCode,startDate,endDate) 
VALUES ('Weekly - TY','UK','20160919','20160925') 
     ,('Weekly - LY','UK','20150921','20150927') 
     ,('Weekly - LW','UK','20150912','20150918') 

Also, entsprechende Woche des Vorjahres. Der andere Bereich ist Monat bis heute.

Was ist der beste Weg, dies zu tun? Ich würde einen bevorzugen, wo ich nur ein Datum eingeben muss und der Rest kann aktualisiert werden.

Haben Sie Fragen, zögern Sie nicht zu fragen.

+0

Ihre Frage ist mir unklar. Könntest du erklären, was du versuchst zu tun? Über welches RDBMS reden wir auch? SQL Server? –

+0

SQL Server. Also muss ich die Daten jedes Mal manuell ändern, wenn ich die Anweisungen ausführen muss. Ich verwende die Datumsbereiche, um eine Verbindung mit den Tabellen herzustellen und die Daten nach diesen Datumsbereichen gruppiert zurückzugeben. Ich brauche eine dynamischere Möglichkeit, diese Daten zu ändern, anstatt jede Woche Daten ändern zu müssen. – Faiz

+1

Könnten Sie bitte Folgendes überprüfen: [Wie eine T-SQL-Frage in einem öffentlichen Forum posten] (https://spaghettidba.com/2015/04/24/how-to-post-at-sql-question-on- a-öffentliches Forum /). Achten Sie besonders auf "Erwartete Ausgabe". Wenn Sie den Richtlinien von diesem Link folgen, wird es für uns viel einfacher zu verstehen, was Sie tun wollen, und es ist einfacher für die Menschen in der Umgebung, Ihnen zu helfen. –

Antwort

0

Sie können jederzeit aktuelle Systemdatumzeit von GETDATE(), erhalten und es dann durch DATEADD()

Zum Beispiel entsprechend ändern:

SELECT DATEADD(YEAR, -1, GETDATE()) -- Result in 1 year prior the current system datetime. 
SELECT DATEADD(MONTH, 13, GETDATE()) -- Result in 13 months after the current system datetime. 

In Ihrem Code-Snippet Sie scheint die Datumzeit in yyyymmdd String-Format zu konvertieren (Obwohl ich die Notwendigkeit sehr bezweifle), die durch eine CONVERT erreicht werden kann:

SELECT CONVERT(VARCHAR, DATEADD(YEAR, -1, GETDATE()), 112) 

Zum Beispiel, wenn heute 26.10.2016 ist, dann sollte es Ergebnis als 1 Jahr vor heute im Format JJJJMMT anzeigen, 20151026

+0

Das macht Sinn tweRay. Also, wo ich die Zeichenfolge habe, kann ich eine Variable verwenden, die den zugewiesenen Wert der Verwendung der Dateadd-Funktionen hätte? – Faiz

+0

@ Faiz ja, obwohl ich nicht vorschlage, Datum als String zu speichern – tweray

Verwandte Themen