Как связать год с датой в SQL Server - PullRequest
2 голосов
/ 03 мая 2011

У меня есть текстовое поле без управления календарем, и мы будем называть его годом публикации (в нашем проекте мы используем имя diff). Год публикации 1999, 2001 или 1860.

Мой шаг выглядит так

У меня есть дата и время в моей базе данных (без изменений)

Я использую C # и SQL Server 2005.

string date = textBox1.text;
Datetime dt = Convert.ToDateTime(date);

Я передаю DT в свою базу данных, используя динамический SQL

чтобы обмануть код, я добавил префикс 1/1 / перед введенной датой, например, 01.01.2010, он работал хорошо

Теперь мой TL попросил меня не делать этого .... Я ??? , Пожалуйста, помогите

Ответы [ 3 ]

8 голосов
/ 03 мая 2011

Похоже, вы действительно должны:

  • Разобрать текст как целое число
  • Создать новый DateTime с этим годом, а 1 января - как день / месяц.

Например:

int year;
if (int.TryParse(textBox1.Text, out year))
{
    DateTime dt = new DateTime(year, 1, 1);
}
else
{
    // Handle input
}
4 голосов
/ 03 мая 2011

В качестве примечания: если вас волнует только год, я бы настоятельно рекомендовал, чтобы поле базы данных было Int, а не DateTime.

Минимальное значение sql datetime равно 1/1/1753 по ряду причин, по которым вы можете обязательно посмотреть . Однако дело в том, что в обычном поле DateTime хранится гораздо больше информации, чем вам нужно.

Так что, если вы имеете дело с публикациями старше 1753 года, вы столкнетесь с архитектурной проблемой. И, если как-то не так, вы наверняка столкнетесь с проблемами, решающими, является ли публикация 280 лет или 279 или 281 ...

0 голосов
/ 03 мая 2011

Вы можете использовать выпадающий список с доступными годами? Если существует только три возможных года публикации, это будет более целесообразно в качестве элемента управления вводом. Возьмите год и добавьте значения месяца и дня DateTime со значением «1».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...