Как преобразовать д / мм / гггг данные в дд / мм / гггг в таблице сервера SQL? - PullRequest
1 голос
/ 09 декабря 2011

Я создал одно поле в базе данных сервера sql как nvarchar datatype и сохранил некоторую дату, например, в формате 'd / MM / yyyy' и 'dd / MM / yyyy' ранее. Теперь я хочу получить все данные в формате 'dd / MM / yyyy', используя запрос, это возможно?

1 Ответ

2 голосов
/ 09 декабря 2011

Вы можете привести поле к datetime в запросе:

select cast(YourField as datetime)
from YourTable
where isdate(YourField) = 1

Часть where isdate(YourField) = 1 необходима для фильтрации строк, в которых значение не является действительной датой (это поле nvarchar)., поэтому в некоторых строках могут быть такие вещи, как abc!

Но вам действительно следует изменить поле на datetime в долгосрочной перспективе, как уже было предложено Кристофером в его комментарии.
Castingкак описано выше, всегда подвержено ошибкам из-за множества различных форматов данных в разных странах.

Например, я живу в Германии, где официальный формат даты - dd.mm.yyyy.
Так что сегодня (9 декабря) равен 9.12.2011, а выполнение select cast('9.12.2011' as datetime) на моем компьютере возвращает правильное значение даты и времени.

Другой распространенный формат - mm/dd/yyyy, поэтому 9 декабря будет 12/9/2011.
Теперь представьте, что у меня естьполе nvarchar с датой в этом формате на моем немецком компьютере:
select cast('12/9/2011' as datetime) вернется 12 сентября (вместо 9 декабря)!

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

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