在MS Access Query中将字符串转换为日期

时间:2013-06-28 09:20:29

标签: sql ms-access casting

我正在根据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

事件。[日期]是访问

中的日期/时间类型字段

我该如何解决这个问题?

5 个答案:

答案 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")