Beware of listening to the imposter; you are undone if you once forget that the fruits of the earth belong to us all, and the earth itself to nobody.
Verwijderd
Als je met ADO je database benadert d.m.v. recordset objecten dan zorgt ADO ervoor dat alles goed gaat met je data.
Mocht je runtime een query moeten samenstellen met een datum erin, gebruik dan de Month(), Day() en Year() functies om te zorgen dat je de goede formatering hebt.
Het probleem alleen is dat interbase alleen met timestamps werkt, je kan wel een date sturen, maar alleen in USA format.Op donderdag 13 september 2001 13:07 schreef klokkie het volgende:
Volgens mij werkt SQL niet met data's volgens de systeeminstellingen. Standaard gebruikt SQL namelijk MM/DD/YYYY.
Als je met ADO je database benadert d.m.v. recordset objecten dan zorgt ADO ervoor dat alles goed gaat met je data.
Mocht je runtime een query moeten samenstellen met een datum erin, gebruik dan de Month(), Day() en Year() functies om te zorgen dat je de goede formatering hebt.
Dus je moet constant converteren van NL dates ( uit ASP ) naar USA dates ( database ) en op het scherm de goede waardes tonen.
Dus een geconverteer en foutgevoeligheid. Desnoods sla ik de timestamp trouwens op al int of double...
Beware of listening to the imposter; you are undone if you once forget that the fruits of the earth belong to us all, and the earth itself to nobody.
krijg je het aantal dagen sindsdien en dus een timestamp, lijkt me?
kaart != map && bottel != fles
Wacht op antwoord
DateDiff("d", "01-01-1970", TxtDatum.value) is hetzelfde als een Unix timestamp uit PHP dachtik.
ik denk dat je bedoeld een huidige datum, bijv. de datum dat iemand iets toevoegd aan de DB ofzo...
ik gebruik daarvoor now()
werkt prima
Aspirant Got Pappa Lid | De toekomst is niet meer wat het geweest is...
wat al eerder gezegt is heb ik ff uitgewerk met een datadiff:
1
2
3
4
5
6
7
8
| <%dim strdatumnumeric
strdatumnumeric=datediff("D",cdate(0),now)
dim strdatumdatum
strdatumdatum=cdate(strdatumnumeric)
%> |
Hij zet alle tijd data als een numerieke waarde in de database en haalt em er dan weer uit en zet m weer om naar datum. Alleen als je waarde van onder 1899 hebt heb je een probleem
Verwijderd
1
| Session.LCID = 1043 |
te doen zodat je altijd nederlandse datums hebt ongeacht van waar je server op staat?
En bovendien moet je dan bij het inserten van je datum weer terug gaan naar 1033 ( usa format ) ,omdat interbase alleen dat slikt.
En da's erg foutgevoelig.
Beware of listening to the imposter; you are undone if you once forget that the fruits of the earth belong to us all, and the earth itself to nobody.
Verwijderd
Oftewel zoiets als:
1
2
| con.Execute "UPDATE tblMyTable SET Date='" & _ Month(Now()) & "/" & Day(Now()) & "/" & Year(Now()) & "'" |
Waarom zou dit niet werken?
Even zo geschreven dat het niet de hele pagina ver***
De oplossing die ik nu gebruik met een eigen functie stamp en unstamp.
De ene die gewoon now( timestamp ) .
De ander andersom via DateDiff , en als basis gebruiken cdate(1) .. (en dan de secondes tellen )
[edit]
now(0) = cdate(1)
Beware of listening to the imposter; you are undone if you once forget that the fruits of the earth belong to us all, and the earth itself to nobody.
Ik ben aan de slag gegaan met mijn idee, maar het is niet helemaal gelukt.
Dit kwam omdat mijn script vanaf de basisdatum (cdate(1)) het aantal secondes optelde. Maar cdate werkt alleen met dagen , dus kreeg ik een gigantische date overflow.
Nu heb ik dat gefixt met een conversie van mijn timestamp naar dagen en die uit te spuwen.
Mocht je het zelf ook willen proberen.
Zo heb ik het gedaan
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
| function Stamp(datum)
response.write datum
if not isdate(datum) then
stamp = ""
exit function
end if
Stamp = dateDiff("S",cdate(1),datum)
end function
function UnStamp(timestamp)
dim StampIndays, SecondsInDays, FullDays, dayDate
' vertaal de seconden timestamp naar gebroken stamp in dagen
StampIndays = timestamp / 60 / 60 / 24
' haal hele dagen op
FullDays = fix(StampInDays)
' haal de restende dag value eruit
SecondsInDays = StampInDays - FullDays
' maak van basisjaar de dagen in dagen
dayDate = DateAdd("D",FullDays,cdate(1))
' tel daarbij resterende secondes op ( maak eerst secondes van dag getal)
Unstamp = dateAdd("S",secondsindays * 24 * 60 * 60 ,dayDate)
end function |
Trouwens moet je in Acces een numeriek veld met een dubbele precisie ( een double dus ) definieren. Anders doet ie het niet
Ik ga naar de kroeg. Dit was weer mijn bijdrage voor vandaag
foutje.,.
Beware of listening to the imposter; you are undone if you once forget that the fruits of the earth belong to us all, and the earth itself to nobody.
Held!basszje je bent een held, alhoewel die van mij ook werkt
alleen nie wat het verschil tussen nu en toen is, mar werkt wel een poepie sneller.
scheelt 20 regels
disjfa - disj·fa (meneer)
disjfa.nl
Verwijderd
Zowel de database als VB kent een datum/tijd type. Daarin staat zoiets als het aantal milliseconden sinds 1970 (SQL Server en Javascript doen het elkgeval zo).
Als je Response.Write Now doet, dan denkt VB(S), aan een lang getal heeft de gebruiker niets, ik converteer het naar een string, volgens de Locale instellingen (regio enzo). En ja, dat is op elk systeem anders.
Als je software voor een server schrijft, moet je dus geen Locale-afhankelijke functies gebruiken! Dus alles wat een datum-type naar een string converteert.
Maar ook het verschil tussen . , en ; (wat is het, lijst-, decimaal- of duizendtallen-scheidingsteken).
VB is wat dat betreft slecht gedocumenteerd voor server-based developers