SQL Server, таблица on принимает определенное время

#sql #sql-server

#sql #sql-сервер

Вопрос:

Я хочу создать ограничения для времени открытия и закрытия магазина, для открытия я хочу это после 9 утра, а для закрытия я хочу это до 9 вечера, как я могу реализовать это с помощью TIMESTAMP. спасибо.

 IF OBJECT_ID('[toyStoreManagement].[dbo].[TOY_STORE]', 'U') IS NOT NULL
DROP TABLE [toyStoreManagement].[dbo].[TOY_STORE]
GO
-- Create the table in the specified schema
CREATE TABLE [toyStoreManagement].[dbo].[TOY_STORE]
(
    [TOY_STORE_ID] INT NOT NULL IDENTITY(1,1) PRIMARY KEY, -- Primary Key column
    [TOY_STORE_NAME] NVARCHAR(30) NOT NULL,
    [CITY] NVARCHAR(30) NOT NULL,
    [PHONENUMBER] NUMERIC(10) NOT NULL UNIQUE(PHONENUMBER),
    [STORE_OPENING_TIME] TIMESTAMP (***HERE***) ,
    [STORE_CLOSING_TIME] TIMESTAMP (***AND HERE***)
    -- Specify more columns here
);
GO
  

Комментарии:

1. Простите, но Oracle и SQL Server — это две разные базы данных. Вам нужен ответ для обеих баз данных?

2. Извините, я новичок в этом, я использую MSSQL в azure data studio

3. для SQL Server вы не должны использовать timestamp, вместо этого используйте time, datetime или datetime2 . Временная метка обесценивается. learn.microsoft.com/en-us/sql/t-sql/data-types /…

4. И не развивайте вредных привычек. Во-первых, ваше соединение должно определить базу данных, которую следует использовать для ссылок на объекты. Используйте 3 или 4 имени частей ТОЛЬКО тогда, когда у вас есть веская причина. Не здесь.

5. Вы не можете сделать это с помощью TIMESTAMP, поскольку это просто числовой счетчик, установленный на основе того, когда строка была записана в последний раз, и не имеет отношения ко времени суток. Тип данных для времени суток — ВРЕМЯ

Ответ №1:

TIMESTAMP это не то, что вы думаете. Вам нужны TIME столбцы с CHECK ограничением:

 STORE_OPENING_TIME TIME,
STORE_CLOSING_TIME TIME,
CHECK (STORE_OPENING_TIME >= '09:00'00' AND STORE_CLOSING_TIME <= '21:00:00')