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