access
列に基づいてDate
テーブルからデータを取得しようとしています。私の要件は、特定の値より大きいすべてを表示することです。私はcast
の値、つまりstring
をフォーマット&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
を[一般日付]フィールドの下に配置できないためです(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")