2013-03-21 3 views
0

Как я могу преобразовать DateTime2 в DateTime из сохраненной процедуры Выполненный результат? У меня есть процедура, которая будет выполнять динамически сформированный sql-оператор, который будет иметь вывод из разных столбцов, в котором есть некоторые типы данных datetime2. Как я могу изменить это datetime2 на datetime, потому что я хочу назначить эту процедуру как источник данных для отчета о кристалле, но хрустальный отчет преобразует datetime2 в строку и строку, которая не может выполнить требуемую логику в отчете. Поэтому я хочу, чтобы процедура давала datetime, а не datetime2.Преобразование DateTime2 в DateTime из хранимой процедуры Выполнено Результат

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

ответ

1

Предполагая строку поля Datetime2 выглядит как это делает в MS SQL/ISO 8601 (см datetime2 (Transact-SQL)): «2007- 05-02T19: 58: 47.1234567 ", вы можете вытащить необходимые части строки, а затем использовать CDate или CDateTime, чтобы преобразовать их в даты или время.

If IsDate(left({Results.DT2Field}, 10)) 
    Then 
    CDate(left({Results.DT2Field}, 10)); 

или DateTime

If IsDateTime(left({Results.DT2Field}, 10) + " " + mid({Results.DT2Field},12,8)) 
    Then 
    CDateTime(left({Results.DT2Field}, 10) + " " + mid({Results.DT2Field},12,8)); 

Представлены результаты выше ваши преобразованные значения.

+0

Типы дат не имеют формата. То, что вы опубликовали, работает только потому, что поле было неявно преобразовано в строку, используя формат, указанный CR. Лучшим решением для * * лучше было бы использовать правильную функцию форматирования с самого начала, например 'ToText', как показано в [этом вопросе] (http://stackoverflow.com/questions/20548852/how-to-convert-datetime- объект-к-строка-в-кристаллических-отчеты) –

Смежные вопросы