Ответ 1
Используйте функцию DateValue()
для преобразования типа данных string
в date
. Это самый простой способ сделать это.
DateValue(String Date)
Я пытаюсь получить данные из моей таблицы access
на основе столбца Date
. Мое требование - отображать все, что больше определенного значения. Я пытаюсь cast
использовать мое значение, которое представляет собой string
с использованием функции Format &CDate
с типом данных datetime
, и оно выбрасывается как переполнение.
Здесь запрос:
Select * from Events
Where Events.[Date] > cDate(Format("20130423014854","yyyy-MM-dd hh:mm:ss"))
Пример значения записи даты из таблицы: 2013-04-23 13:48:54.0
Events.[Date]
- это поле типа Дата/Время в access
Как я могу это исправить?
Используйте функцию DateValue()
для преобразования типа данных string
в date
. Это самый простой способ сделать это.
DateValue(String Date)
В Access нажмите Create > Module
и вставьте следующий код
Public Function ConvertMyStringToDateTime(strIn As String) As Date
ConvertMyStringToDateTime = CDate( _
Mid(strIn, 1, 4) & "-" & Mid(strIn, 5, 2) & "-" & Mid(strIn, 7, 2) & " " & _
Mid(strIn, 9, 2) & ":" & Mid(strIn, 11, 2) & ":" & Mid(strIn, 13, 2))
End Function
Нажмите Ctrl + S и сохраните модуль как modDateConversion
.
Теперь попробуйте использовать запрос типа
Select * from Events
Where Events.[Date] > ConvertMyStringToDateTime("20130423014854")
--- Редактировать ---
Альтернативное решение, исключающее пользовательскую функцию VBA:
SELECT * FROM Events
WHERE Format(Events.[Date],'yyyyMMddHhNnSs') > '20130423014854'
В принципе, это не сработает
Format("20130423014854","yyyy-MM-dd hh:mm:ss")
функция format
будет работать, только если ваша строка имеет правильный формат
Format (#17/04/2004#, "yyyy/mm/dd")
И вам нужно указать, какой тип данных поля [Date]
, потому что я не могу поместить это значение 2013-04-23 13:48:54.0
в поле General Date (я использую MS access2007
).
Вы можете посмотреть эту тему:
выберите дату между
cdate(Format([Datum im Format DDMMYYYY],'##/##/####') )
преобразует строку без знаков препинания в дату
Если вам нужно отобразить все записи после 2014-09-01, добавьте это в свой запрос:
SELECT * FROM Events
WHERE Format(Events.DATE_TIME,'yyyy-MM-dd hh:mm:ss') >= Format("2014-09-01 00:00:00","yyyy-MM-dd hh:mm:ss")