SQL Server 2008 тип DATE показывает мне дату и время в Visual Studio - PullRequest
1 голос
/ 07 декабря 2011

Я использую SQL Server 2008, и мои поля имеют тип DATE, но в моей программе Visual Studio, когда я читаю данные, может показывать мне DATE & TIME, что мне делать?Я пытаюсь преобразовать свои поля в SELECT запросе моей программы, но это дает мне ошибку, как мне решить эту проблему?

Это мой код:

     protected void Page_Load(object sender, EventArgs e)
        {
                SqlCommand cmd = new SqlCommand();
                cmd.Connection = new SqlConnection(Class1.CnnStr);
                SqlDataReader reader;


                cmd.CommandText = "select ContractStartDate,MandateValidDate from table where BrokerName=@BrokerName";
                cmd.Connection.Open();
                cmd.Parameters.AddWithValue("@BrokerName", BrokerName_txt.Text);
                reader = cmd.ExecuteReader();

                if (reader.Read())
                {


                    ContractStartDate_txt.Text = Convert.ToDateTime(reader["ContractStartDate"]).ToString("dd/MM/yyyy");
                    MandateValidDate_txt.Text = Convert.ToDateTime(reader["MandateValidDate"]).ToString("dd/MM/yyyy");               
                    reader.Close();
                }
                cmd.Connection.Close();

            }

ипотому что я хочу сохранить данные после их чтения, это дает мне ошибку:

Преобразование не удалось при преобразовании даты и / или времени из символьной строки.

Ответы [ 4 ]

4 голосов
/ 07 декабря 2011

Вы используете Convert.ToDateTime () , чтобы сначала преобразовать строки, возвращаемые из базы данных, затем, используя DateTime.ToString ("dd / MM / yyyy") , которую вы можете получить только значение даты из даты и времени.

ContractStartDate_txt.Text = Convert.ToDateTime(reader["ContractStartDate"]).ToString("dd/MM/yyyy");
MandateValidDate_txt.Text = Convert.ToDateTime(reader["MandateValidDate"]).ToString("dd/MM/yyyy"); 
0 голосов
/ 07 декабря 2011

Существует множество способов форматирования даты и времени, и один из простых способов - извлечь данные из требуемой таблицы в нужном формате. Как здесь, вам нужно отобразить дату, и если вы используете формат dd / MM / yyyy, попробуйте это

select Convert(varchar(10),ContractStartDate,103) as ContractStartDateformat,,MandateValidDate from table where BrokerName=@BrokerName

Приведение и преобразование. Проверьте это на всякий случай, если вам нужен другой формат даты

0 голосов
/ 07 декабря 2011

Типы даты обычно отображаются на тип DateTime (с компонентом времени, представляющим полночь). Используйте перегрузку ToString, которая принимает аргумент формата (например, someDate.ToString ("yyyy-MM-dd")

Использование первого формата ISO позволяет избежать двусмысленности день-месяц-год по сравнению с месяцем-днем-годом, не полагаясь на использование слов в названиях месяцев.

0 голосов
/ 07 декабря 2011

У вас есть проблема с преобразованием, и вам необходимо преобразовать в правильное сопоставление для БД

, т. Е. БД может хотеть формат 01/23/2011 США, и у вас есть 23/01/2011 в формате UK / Aus

вы можете либо исправить в Code, либо в db до вас ..

a string.format("dd/mmm/yyyy"); в качестве параметра

CONVERT(CHAR, @adate,103)

Мы всегда передаем строку 26Feb2011 в БД, чтобы обойти проблемы сортировки

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