Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Получить часть строки в Access

375
07 июня 2007 года
dominator
199 / / 16.10.2003
Здравствуйте!
Помогите, пожалуйста, решить проблему.
Работаю с БД Access. Есть поле типа дата время. Данные хранятся в ввиде [dd.mm.yyyy hh:mm:ss].
Нужно получить результат dd.mm.yyyy, т.е. первые 10 симоволов. Есть ли у ацесса встроенные функции для работы со строками?
375
07 июня 2007 года
dominator
199 / / 16.10.2003
Собственно вот сейчас обнаружил функцию Left(строка, количество символов), которая делает то, что нужно.
Однако предполагаю, что MSSQL Server имеет другую функцию для решения подобных задач. Кажется есть функция convert.
А нет ли универсальной функции для MSSQL Server и Access, которая решает ту же задачу? Или же Left работает и на "сервере"?
Мне скоро придется конвертировать бд и хотелось бы править как можно меньше запросов...
375
07 июня 2007 года
dominator
199 / / 16.10.2003
Начал проверять...
Код выдает неверные результаты. В чем может быть дело?

 
Код:
SELECT id, Record_date_Sub FROM
(SELECT id, Trim(Left(Record_date, 10)) as Record_date_Sub FROM JournalEvents)
WHERE  Record_date_Sub BETWEEN  DateValue('01.05.2007') AND  DateValue('07.06.2007')


Наверное, подзапрос возвращает Record_date_Sub как строку?
6.4K
07 июня 2007 года
Host
122 / / 22.09.2005
Цитата: dominator
Есть поле типа дата время. Данные хранятся в ввиде [dd.mm.yyyy hh:mm:ss].



Если поле имеет тип данных Date/Time, то данные в этом поле хранятся [COLOR=blue]не[/COLOR] в виде строки.

Цитата: dominator
Нужно получить результат dd.mm.yyyy, т.е. первые 10 симоволов. Есть ли у ацесса встроенные функции для работы со строками?



Функция Format вернет строку в том формате, который указан вторым параметром:

 
Код:
Format(dDate, "dd.mm.yyyy")
375
07 июня 2007 года
dominator
199 / / 16.10.2003
Цитата: Host
Если поле имеет тип данных Date/Time, то данные в этом поле хранятся [COLOR=blue]не[/COLOR] в виде строки.



Ну, это понятно:) Я имел ввиду непосредственно поле подзапроса после обработки его указанными функциями.

Цитата: Host

Функция Format вернет строку в том формате, который указан вторым параметром:
 
Код:
Format(dDate, "dd.mm.yyyy")




Спасибо. Подставил вместо своих манипуляций.

Я сделал так:

 
Код:
SELECT id, Record_date FROM JournalEvents
WHERE Format(Record_date, "dd.mm.yyyy") BETWEEN  DateValue('01.05.2007') AND DateValue('07.06.2007');


В результате, получаю данные с 01.06.2007 по 07.06.2007...
Данные мая игнорируются.
Меняю даты:
 
Код:
BETWEEN  DateValue('01.05.2007') AND  DateValue('27.05.2007')

Захватываются записи и июня тоже.
Т.е. объективно работает неверно. Как это сделать правильно?
6.4K
07 июня 2007 года
Host
122 / / 22.09.2005
Цитата: dominator
Т.е. объективно работает неверно. Как это сделать правильно?



Access ожидает от тебя строку SQL запроса, а не исполняемый код. Ты должен сформировать строку так, что бы ее понял Access:

 
Код:
SELECT JournalEvents.id, JournalEvents.Record_date, JournalEvents.Comment
FROM JournalEvents
WHERE JournalEvents.Record_date BETWEEN #05/01/2007# AND #05/27/2007#;


А все функции должны быть за пределами строки. Их Access не понимает.
375
08 июня 2007 года
dominator
199 / / 16.10.2003
Спасибо тебе большое. Все получилось так, как надо.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог