Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 формат даты в sql 2005  [new]
c1be
Member

Откуда:
Сообщений: 18
Народ, подскажите, как лучше всего сделать столбец в MS SQL 2005, в который затем пользователь сможет ввести только часы и минуты?
Можно ли это сделать с помощью ограничений?
19 мар 12, 21:30    [12277227]     Ответить | Цитировать Сообщить модератору
 Re: формат даты в sql 2005  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31970
c1be
Народ, подскажите, как лучше всего сделать столбец в MS SQL 2005, в который затем пользователь сможет ввести только часы и минуты?
Можно ли это сделать с помощью ограничений?
Нет, в MS SQL 2005 нет такого типа данных, невозможно хранить только часы и минуты.

Разве что поставить ограничение на определённый год, допустим, 1900
19 мар 12, 21:40    [12277292]     Ответить | Цитировать Сообщить модератору
 Re: формат даты в sql 2005  [new]
Mnior
Member

Откуда: Кишинёв
Сообщений: 6724
alexeyvg
Разве что поставить ограничение на определённый год
Точнее день.
19 мар 12, 22:06    [12277433]     Ответить | Цитировать Сообщить модератору
 Re: формат даты в sql 2005  [new]
c1be
Member

Откуда:
Сообщений: 18
а как сделать такое ограничение, чтобы год и месяц и день были, например определенного значения? С помощью default?
19 мар 12, 22:08    [12277445]     Ответить | Цитировать Сообщить модератору
 Re: формат даты в sql 2005  [new]
Ennor Tiegael
Member

Откуда:
Сообщений: 3422
С помощью check.
19 мар 12, 22:13    [12277473]     Ответить | Цитировать Сообщить модератору
 Re: формат даты в sql 2005  [new]
c1be
Member

Откуда:
Сообщений: 18
Я не совсем понимаю, если сделать с check, то пользователю придется вводить 1900-00-00 затем часы/минуты и секунды или можно сделать так, что можно будет вводить лишь только часы/ минуты
19 мар 12, 22:24    [12277533]     Ответить | Цитировать Сообщить модератору
 Re: формат даты в sql 2005  [new]
locky
Member

Откуда: Харьков, Украина
Сообщений: 62034
c1be,

вводом данных занимается клиент
на нём, следовательно, и нужно ограничивать ввод, дополнительно навесив check на поле
19 мар 12, 22:25    [12277543]     Ответить | Цитировать Сообщить модератору
 Re: формат даты в sql 2005  [new]
c1be
Member

Откуда:
Сообщений: 18
То есть нужно написать что-то вроде
CONSTRAINT chk CHECK(date LIKE '1900-00-00 [0-9][0-9].[0-9][0-9].00')
где data есть имя нужного столбца, а пользователю придется вводить каждый раз 18 цифр?
19 мар 12, 22:58    [12277755]     Ответить | Цитировать Сообщить модератору
 Re: формат даты в sql 2005  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31970
Mnior
alexeyvg
Разве что поставить ограничение на определённый год
Точнее день.
Да, описАлся, имел в виду дату.
c1be
Я не совсем понимаю, если сделать с check, то пользователю придется вводить 1900-00-00 затем часы/минуты и секунды или можно сделать так, что можно будет вводить лишь только часы/ минуты
Почему, может, ему придётся мышкой двигать стрелки на часиках? Это всё как напишете, пользователь по любому не сможет менять данные напрямую на диске в файлах базы.
19 мар 12, 23:25    [12277917]     Ответить | Цитировать Сообщить модератору
 Re: формат даты в sql 2005  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31970
c1be
То есть нужно написать что-то вроде
CONSTRAINT chk CHECK(date LIKE '1900-00-00 [0-9][0-9].[0-9][0-9].00')
Разве дату сравнивают со строкой???

А если 1900-01-01 будет сконвертирована как 01 Jan 1900 ?
19 мар 12, 23:27    [12277929]     Ответить | Цитировать Сообщить модератору
 Re: формат даты в sql 2005  [new]
c1be
Member

Откуда:
Сообщений: 18
а как бы вы написали тут? Я запутался
19 мар 12, 23:35    [12277980]     Ответить | Цитировать Сообщить модератору
 Re: формат даты в sql 2005  [new]
SandalTree
Member

Откуда: Перехлёсток восьми батог
Сообщений: 28146
c1be
а как бы вы написали тут? Я запутался

CONSTRAINT chk_tbl_MyTable_MyDate CHECK(MyDate < '1900-01-02')

Никогда не называйте поля по зарезервированным сервером именам, таким как "Date" например.
19 мар 12, 23:50    [12278042]     Ответить | Цитировать Сообщить модератору
 Re: формат даты в sql 2005  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31970
SandalTree
c1be
а как бы вы написали тут? Я запутался

CONSTRAINT chk_tbl_MyTable_MyDate CHECK(MyDate < '1900-01-02')


Никогда не называйте поля по зарезервированным сервером именам, таким как "Date" например.
Лучьше даже так:
CONSTRAINT chk_tbl_MyTable_MyDate CHECK(MyDate >= '19000101' and MyDate < '19000102')
20 мар 12, 00:04    [12278120]     Ответить | Цитировать Сообщить модератору
 Re: формат даты в sql 2005  [new]
c1be
Member

Откуда:
Сообщений: 18
А почему просто равенство поставить нельзя?
CONSTRAINT chk_tbl_MyTable_MyDate CHECK(MyDate = '1900-01-02')
20 мар 12, 01:04    [12278397]     Ответить | Цитировать Сообщить модератору
 Re: формат даты в sql 2005  [new]
Sack
Member

Откуда:
Сообщений: 163
c1be
А почему просто равенство поставить нельзя?
CONSTRAINT chk_tbl_MyTable_MyDate CHECK(MyDate = '1900-01-02')


В этом случае будет ограничение на значение '1900-01-02 00:00'.

Можно ведь проверить:
CREATE TABLE #tbl (dtm datetime CONSTRAINT chk_tbl_MyTable_MyDate CHECK(dtm = '19000101'))
insert into #tbl values ('19000101 10:01')
SELECT * FROM #tbl
DROP TABLE #tbl
GO

CREATE TABLE #tbl2 (dtm datetime CONSTRAINT chk_tbl_MyTable_MyDate CHECK(dtm >= '19000101' AND dtm<'19000102'))
insert into #tbl2 values ('19000101 10:02')
SELECT * FROM #tbl2
DROP TABLE #tbl2
GO
20 мар 12, 07:30    [12278747]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить