データベースの数値「日付」 - 「通常」の日付を使用してそれと対話する方法は?
-
20-08-2019 - |
質問
私はこのデータベースを使用しています。このデータベースでは、Colomnが日付値の代わりに数値値であるこのデータベースを使用しています。
はい、MouseClickでそれを変更できることは知っていますが、そのデータベースを使用するすべてのアプリケーションは私の前任者の1人によって作成されました(そして、彼の後の誰もがそれを無視して構築しました)。したがって、これまで変更すると、AFアプリケーションが失敗します。 :(
さて、私はそのデータベースの概要を作成しています。ドロップダウンリストを使用してみましたが、ご存知のように、1つのリストの1000のオプションは非常に不便で、醜いです。
私はむしろ、日 - 月 - 年に小さな入力フィールドを持っていますが、データベースの数値日にワルツが来ます。何らかの形で日付を数値に戻す必要があります...
これには簡単な解決策が必要です。右?
アプリケーションにASP(VBScript)を使用しています。これはIntraWeb用であり、アクセスデータベースがあります。
解決
アクセスはあなたのために数に変換されます、言及されているように、日付は数字として保存されます。
Dim rs As DAO.Recordset
Set rs = CurrentDb.OpenRecordset("TestTable")
rs.AddNew
rs!NumberDate = Now() 'Value stored, eg, 39791.4749074074 '
rs.Update
rs.MoveLast
'To show that it converts back to the correct date / time '
Debug.Print Format(rs!NumberDate, "dd/mm/yyyy hh:nn:ss")
Reコメントの編集:返された日付を示す小さなテストです。
Set cn = CreateObject("ADODB.Connection")
Set rs = CreateObject("ADODB.Recordset")
strFile = "C:\Docs\LTD.mdb"
cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=" & strFile & ";" & _
"Persist Security Info=False"
strSQL = "SELECT NumberDate FROM TestTable WHERE NumberDate= #2008/12/7#"
rs.Open strSQL, cn, 3, 3
rs.MoveLast
MsgBox rs.RecordCount
他のヒント
右..だから本当に簡単だった。 remouの答えを受け入れます。ここで、numberdate =#2008/12/7#はトリックを行います。
しかし、問題に近づくために、ここに私自身の機能をいじる解決策があります。
Function DateToNumeric(dayDate)
DateToNumeric=DateDiff("d","31/12/1899",dayDate) +1 //yup
End Function
response.Write("9/12/2008, should be 39791.<br /><br />")
response.write("DateToNumeric('9/12/2008') gives: " &DateToNumeric("9/12/2008")& "<br />")
response.write("CDate('39791') gives: " &CDate(39791)&"<br /><br />")
response.write("BECAUSE CDate('1') gives: " &CDate(1))
出力:
9/12/2008、39791でなければなりません。
DatetOnumeric( '9/12/2008')は次のとおりです。39791
CDATE( '39791')は:9-12-2008cdate( '1')が与えるので:31-12-1899
1899年31/12/1899が日ゼロではなく、初日になるようにしました。 :/
みんなありがとう!
アクセスストアは、内部的にフローティングポイント数(31.12.1899以降の日数)として、CDATE()を使用して日付を変換してみましたか?その間の使用をクエリすることができるはずです。
別の可能性は、日付が数値的に保存されますが変換されないこと(つまり31121899)です。この場合、Format()またはday()またはmonth()またはyear()のいずれかを使用して適切な日付部品を取得できるはずです。
お役に立てれば。
悲しいことに、日付は39791-> 9月2008年に保存されます。フローティングポイント番号。
日付を読み取り可能な形式に変換するJavaScript関数(同じ前身によっても書かれています)があります。それは逆の方法であり、私を困惑させる数値に戻る方法です。