gpt4 book ai didi

sql - SQL Server 2008 中工作日的数据类型

转载 作者:搜寻专家 更新时间:2023-10-30 22:15:18 25 4
gpt4 key购买 nike

我有一份在指定日期送货的制造商名单。例如,制造商 A 可能会在星期一和星期四交货。我需要设计一个页面来显示这些信息。该页面基本上包含 7 个复选框,从周一到周日,制造商可以打开/关闭这些复选框以设置他们的首选交货日期。

我在 SQL Server 2008 中创建的表将包含一个制造商 ID,它是用作主键的整数和一个用于存储交货日期的字段。

最适合交货日期的数据类型是什么?

最佳答案

假设寻找一天;

我会选择 TINYINT 因为;

SELECT DATEPART(WEEKDAY, GETDATE())

将产生一个介于 1-7(含)之间的整数

假设寻求多天;

编辑:我认为 n:n 解决方案可能表现更好,但尚未确认。

您有兴趣寻求这样的解决方案吗?我选择这种方法是因为我觉得它比使用 n:n 表更“简洁”。当您扩展您的要求时,我们可以对其进行扩展。

USE tempdb
GO

IF OBJECT_ID('tempdb.dbo.Manufacturer') IS NOT NULL DROP TABLE Manufacturer
IF OBJECT_ID('tempdb.dbo.DeliveryDays') IS NOT NULL DROP TABLE DeliveryDays
CREATE TABLE [dbo].[Manufacturer](
[ManufacturerID] [int] IDENTITY(1,1) NOT NULL,
[Manufacturer] [varchar](50) NOT NULL,
[DeliveryDaysBinScore] [int] NULL,
CONSTRAINT [PK_Manufacturer] PRIMARY KEY CLUSTERED
(
[ManufacturerID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]

CREATE TABLE DeliveryDays
(
WeekdayNum INT
,tDayName VARCHAR(9)
,DayBinVal INT
)
INSERT INTO DeliveryDays VALUES
(1, 'Sunday', 1),
(2, 'Monday', 2),
(3, 'Tuesday', 4),
(4, 'Wednesday', 8),
(5, 'Thursday', 16),
(6, 'Friday', 32),
(7, 'Saturday', 64)

/*
Sunday = 1 = 1
Monday = 2 = 2
Tuesday = 3 = 4
Wednesday = 4 = 8
Thursday = 5 = 16
Friday = 6 = 32
Saturday = 7 = 64
*/

INSERT INTO Manufacturer VALUES
('ABC Co', 16 + 1), ('Boxer PTY', 64+8), ('ConsumeIT', 1+4+16)

SELECT *
FROM Manufacturer M
JOIN DeliveryDays D ON M.DeliveryDaysBinScore & D.DayBinVal != 0

关于sql - SQL Server 2008 中工作日的数据类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14153215/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com