我正在根据Date列从我的访问表中检索数据,要求是显示大于某个值的所有内容
我正在尝试使用Format&amp ;;来转换我的值,这是一个字符串。具有日期时间类型的CDate函数,它将抛出为溢出。
以下是查询:
Select * from Events
Where Events.[Date] > cDate(Format("20130423014854","yyyy-MM-dd hh:mm:ss"))
表格中的样本日期记录值:2013-04-23 13:48:54.0
事件。[日期]是访问
中的日期/时间类型字段我该如何解决这个问题?
答案 0 :(得分:9)
使用DateValue()
函数将字符串转换为日期。这是最简单的方法。
DateValue(String Date)
答案 1 :(得分:3)
在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'
答案 2 :(得分:1)
基本上,这将无法解决
Format("20130423014854","yyyy-MM-dd hh:mm:ss")
格式化功能仅在字符串格式正确
时才有效Format (#17/04/2004#, "yyyy/mm/dd")
你需要告诉[Date]字段的数据类型是什么?因为我不能把这个值放在一个Genearal Date字段下的2013-04-23 13:48:54.0(我使用MS access2007顺便说一句)。 您可能想要查看此主题 select date in between
答案 3 :(得分:1)
cdate(Format([Datum im Format DDMMYYYY],'##/##/####') )
将没有标点字符的字符串转换为日期
答案 4 :(得分:0)
如果您需要在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")