DateTime из C # в MySQL: неполное хранилище - PullRequest
1 голос
/ 22 апреля 2011

Я работаю с DateTime объектами для создания приложения мониторинга.Принцип заключается в том, что каждый раз, когда пользователь запускает определенное приложение, текущая дата и время будут сохранены в БД.Затем в приложении для мониторинга я получаю это поле даты из БД и отображаю его.

Когда я прошел тестирование сегодня, я попытался запустить приложение: DateTime.Now сохранено (т.е. во французской культуре 22/ 04/11 17:09:50).Когда я запускаю приложение мониторинга, я получаю из базы данных 22/04/11 00:00:00. Есть ли причина, по которой точное время не сохраняется?

Столбец в БД имеетКонечно, столбец Дата.

Какой-то код:

Сохранение даты:

                command = new MySqlCommand(_updateDateCommand, connection);
                command.Parameters.AddWithValue("?Template", app);
                command.Parameters.AddWithValue("?Date", DateTime.Now);
                command.Parameters.AddWithValue("?Id", u.Id);


                if (command.ExecuteNonQuery() != 0) return true;

Получение данных:

                object date = reader.GetValue(4);
                if (date == System.DBNull.Value)
                {
                    tempUserApp.DateLastUsed = DateTime.MinValue;
                }
                else
                {
                    tempUserApp.DateLastUsed = (DateTime)date;
                }

ЯУбедитесь, что проблема связана с процессом сохранения, поскольку при визуализации данных с помощью такого инструмента, как Жаба, в поле «Дата» отображается 22/04/11 00:00:00.

Команда обновления:

private readonly string _updateDateCommand =
            "UPDATE userapplications " +
            "JOIN template t ON t.Name = ?Template " +
            "SET DateUsed=?Date  WHERE `User Id`=?Id AND `Template Id`=t.Id";

Есть лиспециальное форматирование для дат MySQL?

Я наткнулся на этот вопрос StackOverflow и попробовал предложенное решение, оно тоже не работает

Есть идеи?

Ответы [ 2 ]

2 голосов
/ 22 апреля 2011

Столбец БД должен быть DateTime, а не Date.Посмотрите на Документы .

О ДАТА:

Тип ДАТА используется, когда вам нужно только значение даты, без части времени.MySQL извлекает и отображает значения DATE в формате «ГГГГ-ММ-ДД».Поддерживаемый диапазон: от 1000-01-01 до 9999-12-31.

О DATETIME:

Тип DATETIME используется, когда вам нужны значениякоторые содержат информацию о дате и времени.MySQL извлекает и отображает значения DATETIME в формате «ГГГГ-ММ-ДД ЧЧ: ММ: СС».Поддерживаемый диапазон: от 1000-01-01 00:00:00 до 9999-12-31 23:59:59.

Получение даты возврата, например, дд / мм / гггг 00: 00: 00 вводит в заблуждение, просто форматируется инструментом как формат даты / даты и времени по умолчанию.Что вам действительно нужно, так это установить для столбца DB значение DateTime.

0 голосов
/ 22 апреля 2011

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

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