Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Web программирование > SQL, базы данных
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 09.10.2010, 23:12   #1
Blondy
Участник клуба
 
Аватар для Blondy
 
Регистрация: 07.07.2009
Сообщений: 1,385
По умолчанию Тип данных Datetime - нужен только формат Year

Добрый вечер!

У меня очень простой вопрос, неожиданно вызвавший трудности.

SQL Server Managment Studio. При создании таблицы, в которую добавляются абитуриенты ВУЗа, для таблицы с годом окончания школы был назначен тип данных Datetime. При внесении данных выяснилось, что колонка тредует полной даты (день, месяц и год), а мне надо, чтобы одних данных о годе было достаточно. Я знаю, что необходимо применить формат Year и желательно в виде Year '19YY', но как назначить этот формат колонке я нигде найти не могу.
По идее нужно написить так
Код:
ALTER TABLE Student
school_finish DATETIME ADD FORMAT YEAR (19YY);
Но подобный синтаксис SQL Server Managment Studio не принимает.....ошибка синтаксиса говорит...... а просто типа данных YEAR в стандартном наборе я не нашла.....

Как грамотно решить эту проблему?
"Все мы жаждем чудес. Чисто человеческое свойство." Carl Sagan
Blondy вне форума Ответить с цитированием
Старый 10.10.2010, 00:23   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
SQL Server Managment Studio.
Это всего лишь инструмент.
а сервер у Вас всё же MS SQL XXXX

теперь по сути вопроса.
И правильно не понимает.
ADD FORMAT YEAR (19YY);
откуда родился этот шедевр?!

По сути Вам нужно использовать обыкновенный целочисленный тип:
school_finish numeric(4,0)

При желании можете добавить к этому полю проверку (constrain)
school_finish>1900 and school_finish<2099

А при вводе/редактировании данных на клиенте использовать контрол, где и задавать свои форматы...

p.s. всё вышесказанное, разумеется, отнюдь не истина, просто мой взгляд на решение Вашей проблемы. то есть, т.н. "ИМХО"
Serge_Bliznykov вне форума Ответить с цитированием
Старый 10.10.2010, 00:41   #3
Blondy
Участник клуба
 
Аватар для Blondy
 
Регистрация: 07.07.2009
Сообщений: 1,385
По умолчанию

Ага, Сергей, спасибо!))

Я если честно, уже думала о переходе на стандартный формат Numeric, просто я не знала, чем я смогу обосновать преподавателю использование стандартного числового типа в поле, где должен вводится год. Когда проектировали саму структуру базы, я спросила, какой тип для этого поля - мне преподаватель сказал Datetime.

А "шедевр" взялся из головы. В учебнике написано, мол, приведите Datetime к формату Year и все будет как надо. А как это сделать грамотно - не написано ни слова.
"Все мы жаждем чудес. Чисто человеческое свойство." Carl Sagan
Blondy вне форума Ответить с цитированием
Старый 10.10.2010, 00:55   #4
soleil@mmc
SQL-коддинг
Участник клуба
 
Регистрация: 16.01.2009
Сообщений: 1,192
По умолчанию

смотря для каких целей - может удобнее будет и DateTime использовать чтобы потом не морочиться с прикруткой остальной части даты к целому числу, чтобы получить полноценную дату
а хранить можно год в виде 01.01.2010 (ну или какие у вас там разделители для даты)
soleil@mmc вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
нужен тип переменой I1IarpeY Паскаль, Turbo Pascal, PascalABC.NET 3 24.06.2010 19:05
Нужен тип чисел больший за long, что делать? Flex Общие вопросы Delphi 23 05.06.2009 23:37
В Access есть тип данных "Счетчик".Есть ли подобный тип данных в MS Sql Server 2000? An_ton SQL, базы данных 5 16.01.2009 17:55
тип DateTime photozaz БД в Delphi 7 12.10.2008 21:02
Объясните, пожалуйста смысл строки - res=d.year > year ? -1: (d.year < year? 0:1) Fynj Помощь студентам 2 17.12.2007 17:50