dh52002 Ответов: 2

Как связать месячный календарь с датой в формате int? С#


Привет,
У меня есть поле в sql server, которое хранит дату как int (20160914).
Мне нужен способ связать его с календарем месяцев в visual studio 2010, чтобы он показывал запись с соответствующей датой из таблицы sql, когда я выбираю дату в календаре месяцев.

Что я уже пробовал:

Я все еще изучаю C#, так что понятия не имею, с чего начать.

2 Ответов

Рейтинг:
0

Karthik_Mahalingam

Получить значение из таблицы с помощью ADO.net а затем преобразуйте его в C# datetime как

int date = 20160914;
       DateTime dt = DateTime.ParseExact(date.ToString(), "yyyyMMdd", System.Globalization.CultureInfo.InvariantCulture);


Рейтинг:
0

OriginalGriff

Лучший подход - не хранить даты в виде целых чисел: измените свою БД так, чтобы они хранились в виде даты или времени - тогда она будет "просто работать" через всю систему и не доставит вам проблем. Всегда храните значения в правильном типе данных: использование неправильного может показаться хорошей идеей, но это всегда создает проблемы.
Если вы этого не сделаете, то вам придется возиться с данными каждый раз, когда вы хотите их использовать:

SELECT DATEFROMPARTS(myDateInAStupidFormatColumn / 10000, (myDateInAStupidFormatColumn/100) % 100, myDateInAStupidFormatColumn %100)
И надейтесь, что данные в вашей БД всегда являются действительной датой...

Затем сделайте что-то подобное, чтобы обратить процесс вспять, когда вы используете значение календаря.

Поверьте мне, изменение вашей базы данных сейчас, прежде чем проблема станет слишком большой, - это гораздо, гораздо лучшее решение!


dh52002

К сожалению, у меня нет никакого контроля над типом данных, так как это формат по умолчанию, хранящийся в программном обеспечении Macola exact.

Я попробовал сделать это выше, однако DATEFROMPARTS не распознается как встроенная функция в SQL Server 2008.

OriginalGriff

Ах! Я использую 2012 так ...
Вы можете посмотреть здесь:
http://stackoverflow.com/questions/19523721/creating-date-in-sql-server-2008
Это дает несколько решений, из которых Джоэл, вероятно, является лучшим.

У меня возникло бы искушение написать приложение "конвертер", которое считывало бы" дурацкую "БД и создавало бы" рабочую " БД - и запускало бы ее каждый раз, когда я хотел бы обновить ее из Macola (что бы это ни было, я о ней не слышал). Если вы не используете данные" реального времени " из приложения, это, вероятно, будет лучшим подходом.