Модераторы: gambit

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Выборка из MS Access по времени, WHERE (PostTime>#26.01.07 12:10:45#) ??? 
V
    Опции темы
gfmail
  Дата 26.1.2007, 11:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 80
Регистрация: 8.7.2006

Репутация: нет
Всего: нет



Требуется сделать выборку из таблицы, взяв те строки, где время (и дата) </> заданных.
Пока нашел только решения для выборки по дате :
Код

"SELECT * FROM Messages WHERE (PostTime>#" + today.Month + "/" + today.Day + "/" + today.Year + "#)",

но если добавить сюда время
Код

"SELECT * FROM Messages WHERE (PostTime>#25.01.2007 10:10:10#)"


то  вылетает ошибка Additional information: Дата содержит синтаксическую ошибку в выражении запроса '(PostTime>#25.01.2007 10:10:10#)'.
 smile . 
Может кто-то сталкивался с таким? В чем ошибка?
PM MAIL ICQ   Вверх
NET_or_not_NET
Дата 26.1.2007, 11:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 71
Регистрация: 10.1.2007

Репутация: 1
Всего: 1



Добрый день!

возможно во втором операторе 
Цитата

"SELECT * FROM Messages WHERE (PostTime>#25.01.2007 10:10:10#)"

Вы перепутали местами 25.01 а надо 01.25 (первым месяц потом число)
PM MAIL   Вверх
gfmail
Дата 26.1.2007, 12:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 80
Регистрация: 8.7.2006

Репутация: нет
Всего: нет



День добрый,
Код

PostTime>#01.01.2007 10:10:10#

так тоже не работает, я вообще сомневаюсь в правильности  этого:
Код

#01.01.2007 10:10:10#

выражения(модифицировал #01.01.2007#). Есть ещё способы передачи даты и времени в запросе?

PM MAIL ICQ   Вверх
NET_or_not_NET
Дата 26.1.2007, 12:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 71
Регистрация: 10.1.2007

Репутация: 1
Всего: 1



попробуйте так

#1/1/2007 10:10:10 PM#

поменять разделители на / и добавить РМ или АМ

проверил работает с точностью до секунды!!! 

Цитата

Есть ещё способы передачи даты и времени в запросе?


можно использовать запрос с параметрами, компилятор преобразует параметр в строку вида... и скорее всего сделает это правильно


я пробовал у меня работает формат строки след: #mm/dd/yyyy hh:mm:ss PM or AM#



Это сообщение отредактировал(а) NET_or_not_NET - 26.1.2007, 12:41
PM MAIL   Вверх
gfmail
Дата 26.1.2007, 12:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 80
Регистрация: 8.7.2006

Репутация: нет
Всего: нет



Спасибо NET_or_not_NET, и вправду работает, как и #1/1/2007 10:24:10#, это что получается, формат времени такой : mm:hh:ss smile .


PM MAIL ICQ   Вверх
NET_or_not_NET
Дата 26.1.2007, 12:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 71
Регистрация: 10.1.2007

Репутация: 1
Всего: 1



Цитата

это что получается, формат времени такой : mm:hh:ss


Не должно так быть!!! 

я тестировал строку
Код

SELECT     ID, DT, Login, Message 
FROM MessagesTable 
WHERE     (DT >#1/25/2007 12:49:56 PM#)


скорее всего необходимо явно указывать РМ

вобщем я подумал и отредактировал предыдущее сообщений так будет правильней 
Цитата

компилятор преобразует параметр в строку вида... и скорее всего сделает это правильно

PM MAIL   Вверх
gfmail
Дата 26.1.2007, 12:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 80
Регистрация: 8.7.2006

Репутация: нет
Всего: нет



Глупый вопрос, однако,  как это PM/AM получить (получить дату и время в таком формате) средствами DateTime

Почему-то не работает DateTime.Now.GetDateTimeFormats('g')[0], не добавляет АМ/РМ.

Это сообщение отредактировал(а) gfmail - 26.1.2007, 13:31
PM MAIL ICQ   Вверх
NET_or_not_NET
Дата 26.1.2007, 13:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 71
Регистрация: 10.1.2007

Репутация: 1
Всего: 1



проблема возможно (скорее всего) в настройках региона ( настройка даты и времени Windows)
ведь мы в формате времени не используем РМ/АМ, а наши "иностранные коллеги и друзья" smile  используют!

Но отдадим им должное они предусмотрели все варианты. Это настройки даты и времени при создании ДБ так и в типе DateTime

все это от сюда public sealed class DateTimeFormatInfo 
а еще есть CultureInfo.DateTimeFormat  (по умолчанию en-us а нам надо rus)
короче надо смотреть я думаю они постарались на славу!просто я с этим не сталкивался

Я попробовал без РМ РАБОТАЕТ!!!!!. если время терпит могу выслать код, но позже (у меня на работе запара)

P.S. еще есть 
ToUniversalTime(), ToLongTimeString(), ToLocalTime();
PM MAIL   Вверх
gfmail
Дата 26.1.2007, 14:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 80
Регистрация: 8.7.2006

Репутация: нет
Всего: нет



Когда я смотрю базу в Access то там нет AM/PM в поле PostTime , может что-то изменить в самом Access?
PM MAIL ICQ   Вверх
NET_or_not_NET
Дата 26.1.2007, 14:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 71
Регистрация: 10.1.2007

Репутация: 1
Всего: 1



Не надо все правильно, Access берет время из системы а оно у нас без АМ/РМ
DateTime делает тоже самое.

я пробывал еще раз все получилось!

вариант примера запроса
Код

SELECT * FROM MessagesTable where (DT >#1/26/2007 "+textBox1.Text+"#)


textBox1.Text менял на: "8:45:40" , "10:10:47", "23:05:20" все отработало с точностью до секунды без АМ/РМ

PM MAIL   Вверх
gfmail
Дата 26.1.2007, 14:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 80
Регистрация: 8.7.2006

Репутация: нет
Всего: нет



Спасибо, буду пробовать.
PM MAIL ICQ   Вверх
NET_or_not_NET
Дата 26.1.2007, 15:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 71
Регистрация: 10.1.2007

Репутация: 1
Всего: 1



Если что пиши мне это интересно !
PM MAIL   Вверх
gfmail
Дата 26.1.2007, 17:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 80
Регистрация: 8.7.2006

Репутация: нет
Всего: нет



Ну прямо анекдот какой-то. В базе дата хранится в виде 26.01.2007, а запрос требует такой : 26/1/2007.
Пишу
Код

 DateTime.Now.ToString("dd/ММ/yyyy")
, а получаю 26.01.2007 вместо 26/1/2007.

Дальше - лучшеsmile :  работает как 26/01/2007, так и 01/26/2007, а если будет 01/01/2007, то где тут месяц smile 

Кто-нибудь может привести способ получения даты, пригодной для  запроса Access?

PM MAIL ICQ   Вверх
gfmail
Дата 26.1.2007, 21:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 80
Регистрация: 8.7.2006

Репутация: нет
Всего: нет



Придумал только вот что 
Код

OleDbDataAdapter("SELECT * FROM Messages WHERE (PostTime>#"
                       + today.ToString("dd") + '/' + today.ToString("MM") + '/' + today.ToString("yyyy") + ' ' 
                       + today.ToString("hh:mm:ss") + "#)", oleDbConnection1);


Всё работает, но такой код показывать стыдно smile . Может есть что-то попроще?
PM MAIL ICQ   Вверх
mr.DUDA
Дата 26.1.2007, 23:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


3D-маньяк
****


Профиль
Группа: Экс. модератор
Сообщений: 8244
Регистрация: 27.7.2003
Где: город-герой Минск

Репутация: 8
Всего: 232



Цитата(gfmail @  26.1.2007,  16:22 Найти цитируемый пост)
DateTime.Now.ToString("dd/ММ/yyyy")

Всегда вернёт "26/01/2007" для 26 января. Иначе и быть не может. На то они и существуют, кастомные форматы даты-времени.


--------------------
user posted image
PM MAIL WWW   Вверх
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
stab
mr.DUDA
Exception

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, stab, mr.DUDA, Exception.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Базы данных под .NET | Следующая тема »


 




[ Время генерации скрипта: 0.1143 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.