2013-06-28 43 views
6

我tyring基於日期列從我的訪問表中檢索數據,要求是顯示所有的內容超過一定值字符串轉換爲在MS Access查詢日期

我想投我的價值是一個字符串更大使用格式&具有日期時間類型的CDate函數,它會作爲溢出拋出。

這裏的查詢:

Select * from Events 
Where Events.[Date] > cDate(Format("20130423014854","yyyy-MM-dd hh:mm:ss")) 

樣數據記錄表值:2013年4月23日13:48:54.0

活動[日期]在訪問

日期/時間類型字段

我該如何解決這個問題?

+0

請[編輯](http://stackoverflow.com/posts/17361338/edit)你的問題澄清:是'事件[日期]'領域的'日期/時間「字段或」文本「字段? –

+0

完成! ..這是一個日期/時間字段 – user2385057

+0

好,很好。你是否嘗試過使用'Where Events。[Date]>#2013-04-23 01:48:54#'? –

回答

1

基本上,這是不行的了

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

,如果你的字符串有正確的格式

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

格式化功能只會工作,你需要告訴什麼數據類型字段的[日期]爲?因爲我不能把這個值2013.4-23 13:48:54.0在一個Genearal Date字段下(我使用MS access2007 btw)。 您可能要查看此主題 select date in between

+0

日期是數據庫中配置的日期/時間類型字段 – user2385057

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 +小號粘貼和模塊保存爲modDateConversion

現在嘗試使用查詢像

Select * from Events 
Where Events.[Date] > ConvertMyStringToDateTime("20130423014854") 

---編輯---

替代解決方案,避免用戶定義的VBA函數:

SELECT * FROM Events 
WHERE Format(Events.[Date],'yyyyMMddHhNnSs') > '20130423014854' 
+0

與我前面提到的類似行爲的作品顯示即使時間戳小於上面的值但具有相同日期的所有記錄..我也在尋找更直接的實施方式,因爲這將是內置Java代碼..所以不能使用這個功能,因爲我現在可能在目標服務器上安裝訪問 – user2385057

+0

@ user2385057 RE:不使用VBA - 我已經更新了我的答案。 –

+0

+1喜歡更新的簡單性來轉換比較的日期字段。 –

1
cdate(Format([Datum im Format DDMMYYYY],'##/##/####')) 

轉換字符串,不標點符號到日期

0

如果您需要2014年9月1日之後繼續顯示所有記錄,添加到您的查詢:

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") 
4

使用DateValue函數將字符串轉換爲日期。這是做這件事最簡單的方法。

則DateValue(字符串日期)

+0

這將是很高興分享一個例子 –

相關問題