Вычисляемый столбец - PullRequest
       1

Вычисляемый столбец

0 голосов
/ 03 ноября 2010

В текущей таблице у меня есть столбец, который содержит поле даты в формате ddmmyyyy и имеет тип varchar (8). Столбец также имеет некоторое строковое значение. Я хочу создать вычисляемый столбец, который будет содержать значение в формате DateTime, если значение в исходном столбце является допустимым временем даты.

Ответы [ 3 ]

0 голосов
/ 03 ноября 2010

попробуйте разобрать ваш varchar в dd / mm / yyyy, прежде чем пытаться читать:

cast(substring([datestring],1,2) + '/' + 
substring([datestring],3,2) + '/' + 
substring([datestring],5,4) as datetime)
0 голосов
/ 03 ноября 2010

SQL Server предпочитает даты в формате ггггммдд, поэтому для форматирования ваших данных потребуются некоторые манипуляции со строками. Мы также должны использовать функцию IsDate, чтобы убедиться, что у нас есть правильная дата.

Итак:

Cast(Case When IsDate(Right(@Data, 4) 
     + SubString(@Data, 3, 2) 
     + Left(@Data, 2)) = 1 
        Then Right(@Data, 4) 
           + SubString(@Data, 3, 2) 
           + Left(@Data, 2) End  As DateTime)

Обратите внимание, что этот код должен правильно обрабатывать недопустимые даты, содержащиеся в столбце varchar. Если дата недействительна, этот код вернет NULL.

0 голосов
/ 03 ноября 2010

Предполагая, что ваш столбец varchar (8) равен dateString:

Cast([dateString] as datetime)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...