У меня есть приложение VB6, которое работает со значениями даты и времени в SQL Server (которые, очевидно, хранят даты в виде мм / дд / гггг).
Мне нужно представить эти даты пользователю как дд / мм / гггг, прочитать их как дд / мм / гггг, а затем сохранить их обратно в базу данных как стандартные мм / дд / гггг.
Это текущие фрагменты кода, которые у меня есть, которые вытащить + вставить даты, однако я прочитал много противоречивых методов обработки преобразований, и мне было интересно, если кто-нибудь здесь знал четкое решение для этой ситуации.
"SELECT * FROM List WHERE DateIn LIKE '%" & txtDateIn.Text & "%'"
"UPDATE [Progress] SET [Date] = '" & txtDate.Text & "'"
txtDate.Text = "" & RecordSet.Fields("Date").Value
Есть мысли? Заранее спасибо.
** Обновление
На самом деле я только что заметил, что у меня есть даты, хранящиеся в полях datetime в форме 16/08/2009 00:00:00, которая является дд / мм / гггг. Так что, возможно, я неправильно понял проблему. Но при попытке обновить значение datetime у меня получалось «Преобразование типа данных char в тип данных datetime привело к значению datetime вне диапазона.».
Я предположил, что это произошло из-за того, что форматы даты не совпадали (что вызвало проблему с наличием значения месяца вне диапазона), однако у меня уже есть значения даты в формате день / месяц / год в поле даты и времени. И дата отправки в базу данных определенно дд / мм / гггг.
**** Обновление 2 **
Ладно, похоже, у меня возникла путаница. Я прошу прощения.
- Я храню даты как дату и время в базе данных SQL
- Тексты - это элементы управления TextBox в приложении VB6
- Я выполняю операторы SQL SELECT, чтобы прочитать даты из базы данных и поместить значение в TextBox
- Затем у меня есть командная кнопка 'commit', которая затем выполняет инструкцию SQL UPDATE, чтобы поместить значение TextBox в поле datetime в базе данных SQL
- Это прекрасно работает до 1 конкретного случая.
В этом случае у меня есть значение datetime (которое SQL Server 2005 отображает как 16/08/2009 00:00:00), которое считывается из базы данных и заполняет TextBox значением 16/08/2009. Теперь, когда я пытаюсь выполнить инструкцию UPDATE без изменения текста TextBox, я получаю ошибку «Преобразование типа данных char в тип данных datetime привело к значению datetime вне диапазона».
Этого не происходит с другими записями, такими как запись с датой 04/08/2009, поэтому единственная проблема, которую я могу видеть, это, возможно, позиция дня и месяца в значении, потому что, если DB ожидает сначала месяц, то очевидно 16/08/2009 было бы вне диапазона. Однако значение в базе данных уже 16/08/2009 без проблем.