Конвертирование "23.04.2008 00:00:00" в "23.04.2008"

GuestGuestSQL

Народ привет. Сразу скажу, что сделать я это хочу в Reporting ServicesНужно стринг "23.04.2008 00:00:00" переконвертить в стринг "23.04.2008"Хотел сначало переконверить в дату, а потом сделать использовать Format с ("dd.MM.yyyy"), но на этапе CDate("23.04.2008 00:00:00") - уже выдается ошибка, так как на первом месте должен быть месяц, потом день, потом год. Если ли какой нибудь доп параметр для конвертации, типа в ToString("d"). В функциях Бейсика не силен, но впринипе можно гуглить и гуглить).За ранее спасибо за помощь.
6 ответов

GuestGuestSQL

> Автор: GuestGuestSQL> Народ привет. Сразу скажу, что сделать я это хочу в Reporting Services> Нужно стринг "23.04.2008 00:00:00" переконвертить в стринг "23.04.2008"А просто сделать Left("23.04.2008 00:00:00", 10) нельзя? или могут быть данные и без строки с датой?Можно запросом сделать
select cast(coalesce(имя поля или функции, '01.01.2008') as varchar(<b>10</b>)) from some_table
Как-то так :)


GuestGuestSQL

>А просто сделать Left("23.04.2008 00:00:00", 10) нельзя? или могут быть данные и без строки с датой?Угу.В ReportServices, когда ты уже получил данное, используются только операторы Бейсика.Можно ли это сделать средставами некторых операторов, которые в ReportServices предосталены.Если нет, то будем думать чтобы на вход уже приходили обрезанные параменты.Но хотелось бы именно средставми ReportServices.Thanks.


GuestGuestSQL

Debug.print Trim(Replace("23.04.2008 00:00:00","00:00:00"))


GuestGuestSQL

> Автор: GuestGuestSQL> >А просто сделать Left("23.04.2008 00:00:00", 10) нельзя? или могут быть данные и без строки с датой?> Угу.>> В ReportServices, когда ты уже получил данное, используются только операторы Бейсика.> Можно ли это сделать средставами некторых операторов, которые в ReportServices предосталены.Я не знаю какие операторы бейсика представленны в репортсервисе, но если там идет обработка построчно, т.е. в цикле, то сначала проверять что строка длиннее 10 символов и в ключевых местах стоят точки и если да, тогда делать Left..., если нет тогда просто присваивать какое-то значение которое показывает отсутствие даты.А если там идет обработка множеств, как в sql, тогда запрос, который я написал


GuestGuestSQL

Игорь ГорбоносСпасибо. Там ближе первый вариант.Только циклов вроде бы там нет)Left - конечно даст правильный результат.Но так как там нельзя пробежаться по строке, то мы не знаем, в тех ли местах точки стоят.Еще мне кажется что использование Left как то опасно. Логичней привести к нужному формату используя функции аля Format. Правда для этого тип 1ым аргументом функции Format должен быть ДейтТайм. Если не найду ничего другого, буду использовать LeftЕще раз спасибо.


GuestGuestSQL

> Автор: GuestGuestSQL> Игорь Горбонос> Спасибо. Там ближе первый вариант.> Только циклов вроде бы там нет)> Left - конечно даст правильный результат.> Но так как там нельзя пробежаться по строке, то мы не знаем, в тех ли местах точки стоят.тогда можно воспользоватся предложенным Konst_One, его вариант, даже лучше, если там ничего не будет, то ничего и не сделается >> Еще мне кажется что использование Left как то опасно. Логичней привести к нужному формату используя функции аля > Format. Правда для этого тип 1ым аргументом функции Format должен быть ДейтТайм.Тогда прямая дорога на предыдущий рубеж, где данные попадают в репортсервис и там приводить к нужному знаменателю :)