#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')