Sedge писал(а):Какова структура у таблицы (в частности - какой формат поля, в котором хранится дата)?
-- Все записи позже 3 апреля 2005 года 16:38
select *
from TableName
where datefield > '20050403 16:38:00'
Ennor писал(а):Sedge писал(а):Какова структура у таблицы (в частности - какой формат поля, в котором хранится дата)?
Формат поля, в котором хранится дата, может быть только один - дата. А как это аксесс на экране показывает - это вообще дело десятое.
Ой-е, только не это! Ты представляешь, как он будет сравнивать между собой два варчара?Sedge писал(а):... Просто возникли подозрения, что стоит какой-нибудь char (или что там у нас в Access'е)...
Ennor писал(а):Ой-е, только не это! Ты представляешь, как он будет сравнивать между собой два варчара?
Ennor писал(а):Sedge писал(а):Какова структура у таблицы (в частности - какой формат поля, в котором хранится дата)?
Формат поля, в котором хранится дата, может быть только один - дата. А как это аксесс на экране показывает - это вообще дело десятое.
- Код: Выделить всё
-- Все записи позже 3 апреля 2005 года 16:38
select *
from TableName
where datefield > '20050403 16:38:00'
Если вдруг аксесс не поддерживает одинарные кавычки - ну, что там для строк используется, двойные, видимо...
valdis000 писал(а):Запрос такой:
"select distinct поле from таблица where дата between #" & D1.Value & "# and #" & D2.Value & "#;" дата формат dd/MM/yyyy.
[/syntax]
Ennor писал(а):Ммм. Я бы все-таки дефисы попробовал убрать. Кстати, а как он воспримет, скажем, #2005-03-07# - как третье июля или все-таки седьмое марта?
PLA писал(а):3)Разделитель года, месяца, дня брать из настроек Виндуса "Язык и стандарты".
Наша раскладка идентична немецкой.hCORe писал(а):Ага, и еще совсем забыли про нас - dd.mm.yy
Я не знаю, как с этим обстоит дело в аксессе, но в случае сиквела, чем получить национальный формат даты на сервере, проще использовать нативный, указанный мной выше и понимаемый всегда однозначно.PLA писал(а):Естественно сервере, т.к. он обрабатывает SQL запрос.
Но можно для облегчения создать связанные таблицы в БД Access на компьютере клиента и тогда формат брать из клиентских настроек.
Format(DateVar, "yyyymmdd hh:mi:ss")
alibek писал(а):Ты не прав, Борис
Под параметрическим запросом я имею ввиду выполнение запроса не через Execute, а через объект Command (и задание параметров в коллекции Parameters, у членов которой есть свойство Type).
Function sAmericanDateStyle(datDate As Date) As String
sAmericanDateStyle = "#" & Format$(datDate, "mm.dd.yyyy") & "#"
End Function
Private Sub Command1_Click()
'îòêðûâàåì áàçó
Adodc1.ConnectionString = "Provider = Microsoft.Jet.OLEDB.4.0;Data Source=" + App.Path + "\DATA\data.mdb;Persist Security Info=False"
Adodc1.CommandType = adCmdText
'Ñîçäàåì çàïðîñ
d1 = "#" & Format$(CDate(DTPicker1.Value), "mm\/dd\/yyyy") & "#"
d2 = "#" & Format$(CDate(DTPicker2.Value), "mm\/dd\/yyyy") & "#"
Adodc1.RecordSource = "select * from data where date BETWEEN " + d1 + " and " + d2 + " "
Ennor писал(а):Основная проблема тут в том, что сервер в общем случае не знает формата даты той страны, в которой он установлен.
Ennor писал(а): И не надо делать круглые глаза - вы в курсе, что, например, в Венгрии разделитель даты состоит из двух символов - точки и пробела? Ну а теперь найдите мне этот формат среди тех, которые перечислил PLA . Как успехи? То-то же.
Ennor писал(а):Теперь, если нужно, я всегда пишу примерно так:
- Код: Выделить всё
Format(DateVar, "yyyymmdd hh:mi:ss")
Andrey Fedorov писал(а):Access требует заключение даты в # и наличие разделителя. В общем для него подходят варианты:
#yyyy-mm-dd# и #m/d/yyyy# - из них я предпочитаю первый.
Function sAmericanDateStyle(datDate As Date) As String
sAmericanDateStyle = "#" & Format$(datDate, "yyyy-mm-dd") & "#"
End Function
Private Sub Command1_Click()
Adodc1.ConnectionString = "Provider = Microsoft.Jet.OLEDB.4.0;Data Source=" + App.Path + "\DATA\data.mdb;Persist Security Info=False"
Adodc1.CommandType = adCmdText
d1 = "#" & Format$(CDate(DTPicker1.Value), "yyyy-mm-dd") & "#"
d2 = "#" & Format$(CDate(DTPicker2.Value), "yyyy-mm-dd") & "#"
Adodc1.RecordSource = "select * from data where date BETWEEN " + d1 + " and " + d2 + " "
Adodc1.Refresh
SK | Heaton писал(а):у меня всеравно не получается
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2