Wir verwenden 4-4-5 Accounting Periods. Falls Sie nicht damit vertraut sind, finden Sie Informationen unter Wikipedia.4-4-5 Accounting-Perioden sind der Fluch meiner Existenz
Um dies zu erreichen, habe ich eine Datumstabelle mit allen Tagen für die nächsten 10 Jahre erstellt. Ich habe das Skript (wenn auch modifiziert) gefunden here.
Die Schaffung Skript für meinen Tisch ist:
USE [RedFridayDates];
GO
SET ANSI_NULLS ON;
GO
SET QUOTED_IDENTIFIER ON;
GO
CREATE TABLE [tblRedFridayAllDates] (
[DATE_ID] int NOT NULL,
[DATE] datetime NOT NULL,
[YEAR] smallint NOT NULL,
[MONTH] tinyint NOT NULL,
[DAY_OF_WEEK] tinyint NOT NULL,
[REDFRIDAY] bit NULL,
[Period] tinyint NULL,
[ForecastSales] money NULL)
ON [PRIMARY];
GO
Die Zeit ist mein 4-4-5 "Monat".
verbinde ich normalerweise meine Fragen, um es mit der folgenden Vorlage I erstellt:
SELECT RED.[YEAR] as [Year],
RED.PERIOD as [RF Period],
FROM TableName
INNER JOIN REDFRIDAYDATES..TBLREDFRIDAYALLDATES RED
ON RED.date =
CAST (FLOOR (CAST (TableName.Date AS FLOAT)) AS DATETIME)
Die meisten meiner Datenbanknutzung ist SQL 2000 so meine Daten alle Datetime-Felder sind.
Gibt es einen effizienteren Weg, dies zu erreichen? Ist das die beste Abfragevorlage, die ich verwenden könnte? Was ist mit anderen Möglichkeiten zum Konvertieren von Date to Date? Gibt es schnellere Möglichkeiten?