15

我正在尝试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

我怎样才能解决这个问题 ?

4

5 回答 5

19

使用该DateValue()函数将 a 转换stringdate数据类型。这是最简单的方法。

DateValue(String Date) 
于 2015-04-22T09:59:34.557 回答
5

在 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'
于 2013-06-28T11:58:01.283 回答
2

基本上,这是行不通的

Format("20130423014854","yyyy-MM-dd hh:mm:ss")

format功能仅在您的字符串格式正确时才有效

Format (#17/04/2004#, "yyyy/mm/dd")

您需要指定字段的数据类型[Date]是什么,因为我不能将此值 2013-04-23 13:48:54.0放在通用日期字段下(我使用MS access2007)。您可能想查看此主题: 选择介于两者之间的日期

于 2013-06-28T09:57:56.740 回答
2
cdate(Format([Datum im Format DDMMYYYY],'##/##/####') ) 

将没有标点符号的字符串转换为日期

于 2014-06-10T13:44:22.327 回答
1

如果您需要显示 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")
于 2014-09-05T08:48:19.917 回答