我们使用 4-4-5 会计期间。如果您对此不熟悉,可以在Wikipedia上找到相关信息。
为此,我创建了一个包含未来 10 年所有日期的日期表。我使用了此处找到的脚本(尽管已修改)。
我的表的创建脚本是:
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
期间是我的 4-4-5“月”。
我通常使用我创建的以下模板将我的查询链接到它:
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)
我的大部分数据库使用是 SQL 2000,所以我的日期都是日期时间字段。
有没有更有效的方法来实现这一点?这是我可以使用的最好的查询模板吗?将日期转换为日期时间的其他方法呢?有更快的方法吗?