Универсальная строка даты в MS SQL или ошибка The conversion of a char data type to a datetime data type resulted in an out-of-range datetime value.

При формировании sql запросов очень часто используются строчные значения даты. Все бы хорошо, но формат этих строк зависит от региона, точнее говоря от региональных настроек сервера и клиента и скрытых преобразований формата datetime внутри разных программ и библиотек. Иначе говоря, от множества переменных параметров, не зависящих от программиста. Все это приводит к классическому кошмару программиста - когда один и тот же код выполняется по-разному в зависимости от непредсказуемых внешних условий (например выполняется из SQL Managment Studio и вылетает в C#, или вылетает на отсылке на сервер прочитанных с него же данных). Характерным признаком подобных проблем является ошибка "The conversion of a char data type to a datetime data type resulted in an out-of-range datetime value."

Но не стоит отчаиваться, спасение есть, в MS SQL Server существует универсальный формат строки даты, не зависящий от всего этого ужаса - ГГГГММДД или 20120201 для 1 февраля 2012 . Получить такую строку из DateTime или произвольной строки даты можно следующим образом:

string sqlDateStr = Convert.ToDateTime(dateStr).ToString("yyyyMMdd");

Вообще-то этот формат пришел из стандарта 8601 и для даты и времени можно использовать такую строку в соответствии со стандартом

select cast('2014-01-24T11:19:00.000' as datetime)

TSQL DATETIME ISO 8601
Universal Date format to insert date in to SQL Server? Shock


Комментарии

Универсальная строка даты в MS SQL или ошибка The conversion of a char data type to a datetime data type resulted in an out-of-range datetime value. — 1 комментарий

  1. So sipmel, yet so full of flavor. After this long week, I need to curl up with a bowl of soup and a big chunk of bread. Julia never fails! Thank you for never failing too!

Добавить комментарий для Paulina Отменить ответ

Ваш e-mail не будет опубликован. Обязательные поля помечены *


*

Можно использовать следующие HTML-теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>