Domanda

Sto usando questo database in cui la data colomn è un valore numerico anziché un valore della data.

Sì, so di poterlo cambiare con un mouseclick, ma tutte le applicazioni che utilizzano quel database sono state fatte da uno dei miei predecessori (e tutti dopo di lui lo hanno appena ignorato e costruito). Quindi, se lo cambierei fino ad oggi, le applicazioni AF fallirebbe. :(

Bene, sto facendo una panoramica di quel database, che va da una data specifica all'altra. Ho provato a usare un elenco a discesa, ma come puoi dire, mille opzioni in un elenco sono terribilmente scomode, anche brutte.

Preferisco avere piccoli campi di input per il giorno - mese - anno, ma arriva il waltzing nella data numerica nel database. Dovrei calcolare la data di ritorno al valore numerico in qualche modo ...

Ci deve essere una soluzione facile a questo. Destra?



Sto usando ASP (VBScript) per l'applicazione, è per un Intraweb e ho un database di accesso.

È stato utile?

Soluzione

L'accesso convertirà in un numero per te, come è stato detto, le date sono archiviate come numeri.

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

Modifica Re Commento: ecco un piccolo test che mostra le date restituite:

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

Altri suggerimenti

Bene .. Quindi è stato davvero facile. Accetterò la risposta di Remou, il dove NumberDate = # 2008/12/7 # fa il trucco.

Ma, per avvicinarsi alla questione, ecco la soluzione al mio armeggiare con le funzioni:

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

produzione:

9/12/2008, dovrebbe essere 39791.

DateTonumeric ('9/12/2008') dà: 39791
CDATE ('39791') dà: 9-12-2008

Perché CDATE ('1') dà: 31-12-1899

Ha fatto in modo che il 31/12/1899 non sia il giorno zero, ma il primo giorno. :/

Grazie ragazzi!

Access Stores Data internamente come numero di punto galleggiante (numero di giorni dal 31.12.1899 o qualcosa del genere), hai provato a usare cDate () per convertire il numero in una data? Dovresti essere in grado di interrogare usando in quel momento.

Un'altra possibilità è che la data sia memorizzata numericamente ma non convertita (cioè 31121899), in questo caso dovresti essere in grado di ottenere le parti della data appropriate utilizzando il formato () o il giorno () o il mese () o l'anno ().

Spero che sia di aiuto.

Purtroppo la data è memorizzata come 39791-> 9-dic-2008. Il numero di punto galleggiante.

Ho una funzione JavaScript (anche scritta dallo stesso predecessore) che converte la data in un formato leggibile. È il contrario, il ritorno a quel valore numerico che mi sconcerta.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top