0 / 0 / 0
Регистрация: 26.10.2010
Сообщений: 37

SQL-запрос к этому полю типа 'SELECT * FROM [файл] WHERE [поле типа дата] > [

26.10.2010, 17:38. Показов 4705. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Суть проблемы:
Есть база, созданная средствами VB (Visual Data Manager) в Access формате. В ней есть поле типа Data/Time. Так вот, SQL-запрос к этому полю типа 'SELECT * FROM [файл] WHERE [поле типа дата] > [переменная с датой]' выдает ошибку несовместимости типов данных. Пробовал строковые переменные, отформатированные под дату, пробовал переменные с типом Date, с кавычками и без них - не помогает. Помогите!
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
26.10.2010, 17:38
Ответы с готовыми решениями:

Фильтрация таблицы по полю типа дата
Всем добрый день. Мне нужно отфильтровать таблицу по полю типа дата. Использую такую конструкцию: ADOQuery1.Filtered := False; ...

Выборка по полю типа дата/время
Доброго времни суток всем. Столкнулся с такой проблемой, в базе данных есть поле типа дата/время, там записана только дата, т.е. например...

Как реализовать на C# запрос типа SELECT ... WHERE col IN (SELECT ...)
Есть две таблицы DataTable t1 и DataTable t2. Как выбрать в таблице t1 все строки, у которых значение столбца 1 есть в значениях столбца 1...

6
0 / 0 / 3
Регистрация: 28.01.2010
Сообщений: 279
26.10.2010, 17:58
Winda то небось Русская?:-) Да и офис тоже небось русский? :-))
Не совпадают форматы дат в запросах и в офисе.
Чтобы сравнить дату в SQL запросе она должна быть американского стандарту 'месяц/число/год'.

Вот держи функцию, которую я лет пять назад написал, перед запросом переделывай дату при помощи этой функции:

'Стандарт получаемой даты в самом верху модуля тип поставь
Public Enum dfDateFormat
dfRU = 0 'Русский вариант
dfEN = 1 'Английский вариант
End Enum

'Конвертирует Даты в Руский или Английский стандарт
'В случае ошибки возвращает пустую строку; при успешном выполнении
дату нужного стандарта как строковую переменную
'dfOutFormat это в каком варианте тебе вернуть дату в строке dfEn английский

Public Function Convert_Date_RU_EN(dtDate As Variant, dfOutFormat As dfDateFormat) As String
Dim strDT As String

On Error GoTo ErrD
strDT = CStr(dtDate)
If InStr(strDT, '.') <> 0 Then
Select Case dfOutFormat
Case 0 'Русский
strDT = Mid(strDT, InStr(strDT, '.') + 1, InStrRev(strDT, '.') - InStr(strDT, '.') - 1) & '.' & Left(strDT, InStr(strDT, '.') - 1) & '.' & Mid(strDT, InStrRev(strDT, '.') + 1)
Case 1 'Английский
strDT = Mid(strDT, InStr(strDT, '.') + 1, InStrRev(strDT, '.') - InStr(strDT, '.') - 1) & '/' & Left(strDT, InStr(strDT, '.') - 1) & '/' & Mid(strDT, InStrRev(strDT, '.') + 1)
End Select
Convert_Date_RU_EN = strDT
ElseIf InStr(strDT, '/') <> 0 Then
Select Case dfOutFormat
Case 0 'Русский
strDT = Mid(strDT, InStr(strDT, '/') + 1, InStrRev(strDT, '/') - InStr(strDT, '/') - 1) & '.' & Left(strDT, InStr(strDT, '/') - 1) & '.' & Mid(strDT, InStrRev(strDT, '/') + 1)
Case 1 'Английский
strDT = Mid(strDT, InStr(strDT, '/') + 1, InStrRev(strDT, '/') - InStr(strDT, '/') - 1) & '/' & Left(strDT, InStr(strDT, '/') - 1) & '/' & Mid(strDT, InStrRev(strDT, '/') + 1)
End Select
Convert_Date_RU_EN = strDT
Else
Convert_Date_RU_EN = ''
End If
Exit Function
ErrD:
Convert_Date_RU_EN = ''
Exit Function
End Function
0
1 / 1 / 0
Регистрация: 25.05.2008
Сообщений: 232
26.10.2010, 17:58
попробуй заключить дату в ##
#21/12/2001#

И может быть надо сделать американский формат mm/dd/yyyy.
А вообще лучше приведи код
0
0 / 0 / 0
Регистрация: 26.10.2010
Сообщений: 37
26.10.2010, 18:33  [ТС]
Спасибо, но просто американский формат пока не помог.
А код примерно такой:

Data1 - поле базы данных типа Date/Time

Dim Data2 as string (или as Date)
Data1 = DTPicker.Value
....
.Open ('SELECT * FROM File WHERE Data1 >= '' & Дата2 & ''')
или
.Open ('SELECT * FROM File WHERE Data1 >= '' & _
Format(Дата2,'dd.mm.yy') & ''')
или
.Open ('SELECT * FROM File WHERE Data1 >= '' & _
Format(Дата2,'mm.dd.yy') & ''')
0
0 / 0 / 3
Регистрация: 28.01.2010
Сообщений: 279
26.10.2010, 18:47
Опять же те же грабли лабызаешь! Тебе же сказали АМЕРИКАНСКИЙ формат, а ты что делаешь: Format(Дата2,'mm.dd.yy') какие точки в английском формате там слэши '/'.
И на счет Data1=DTPicker.Value это же поле в базе, наверное ты описку допустил?
Запрос выглядит так:

Dim Data2 as Date
Dim Data3 AS String
Data2 = DTPicker.Value
Data3 = Convert_Date_RU_EN(Data2, dfEN)
теперь Data3='8/18/2004' это сегодня
Open ('SELECT * FROM File WHERE Data1>=#' & Data3 & '#')
0
0 / 0 / 0
Регистрация: 26.10.2010
Сообщений: 37
26.10.2010, 18:52  [ТС]
Да, про Data1 это описка конечно.
Щас попробую со слешами
0
0 / 0 / 0
Регистрация: 26.10.2010
Сообщений: 37
27.10.2010, 12:33  [ТС]
Парни, спасибо! Заработало!
Работает только если заключить переменную в решетки (##).
Никогда б не догадался )
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
27.10.2010, 12:33
Помогаю со студенческими работами здесь

Фильтр поле типа Дата
Добрый день всем! В таблице есть два поля даты начала и окончания Есть форма c элементами типа дата не могу составить запрос...

Поле типа дата в DBGrid
Добрый вечер,подскажите, пожалуйста,как отловить ошибку в ячейке DBGrid на неправильный ввод даты? Какое событие обрабатывать? Пробовал...

Запрос на обновление посредством SET поле=(select....)
Вечер добрый, граждане, подскажите пожалуйста... можно ли в Access реализовать запрос вида UPDATE таблица SET...

Запрос к полю типа text возвращает Null
Добрый день, коллеги.. у меня вот такая проблемка возникла, делаю запрос к таблице CODE (SQL): скопировать код в буфер обмена ...

Как в поле типа дата время записать пустоту?
на форме едиты и кнопка - вводятся туда данные и записываются в таблицу в акцессе. В таблице поля типа дата-время Подскажите пожалуйста...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

Новые блоги и статьи
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка SDL3 и Box2D из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru