VB6: CDate (некоторая дата) возвращает ошибку времени выполнения 13 - PullRequest
1 голос
/ 12 апреля 2011

HI,

У меня есть эта строка: "2010-12-27 23: 05: 36.0".Когда я анализирую его с помощью CDate следующим образом: CDate («2010-12-27 23: 05: 36.0») возвращает ошибку 13. Когда я удаляю «.0» из строки, он работает нормально.

Строка даты поступает из базы данных, в которой есть смесь дат, отформатированных следующим образом: «гггг-мм-дд» и «гггг-мм-дд чч-мм-сс.н». Что бы было прощеошибки 13?

Ответы [ 2 ]

5 голосов
/ 12 апреля 2011

Лучшее решение - НЕ хранить даты в виде строк. Все базы данных могут обрабатывать даты, а ADO может возвращать значения даты напрямую, без преобразования их в строки. Если данные даты хранятся в виде типа даты, вам, вероятно, вообще не нужно использовать CDate. Возвращенный набор записей будет содержать базовые данные в качестве варианта даты.

Если все-таки данные хранятся в виде строки, вы можете изменить оператор SQL, чтобы преобразовать строку в дату, используя встроенные функции вашей БД. В SQL Server вы можете сделать это с помощью функций CAST и CONVERT, например,

CAST(myDateAsTextField as datetime)

Тип данных SQL Server DATETIME принимает доли секунды с 1-3 цифрами.

Наконец, вы можете проверить содержимое строки и преобразовать ее в другую форму перед вызовом CDate. Это следует использовать в качестве крайней меры, если вы не можете исправить данные на уровне базы данных.

1 голос
/ 12 апреля 2011

Вы можете проверить длину строки -> если она> 19, избавиться от остальных и применить затем функцию CDate

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