[MS SQL] + ASP.NET + meertalige datum

Pagina: 1
Acties:

  • stp_4
  • Registratie: Maart 2003
  • Laatst online: 29-07 17:11
Dag mensen,

Ik ben een probleem tegengekomen en snap niet waar het aan ligt.
situatie:

Op een asp.net pagina wordt een sp aangeroepen waarin een datum wordt ingevoerd. Via deze sp wordt deze datum opgeslagen nadat deze is geconverteerd. In de INSERT querie wordt deze datum alsvolgt converteerd:

CONVERT( smalldatetime,@datum,101)

Op deze manier wordt de datum altijd op 1 en dezelfde manier ingevoerd. Nu zou je verwachten dat als je deze datum weer aanroept in een webpagina hij deze datum in de juiste taal-format laat zien: dus engels = 12/17/2003 en nederlands = 17-12-2003. Het blijkt echter dat als ik mijn taalinstelling wijzig naar de nederlandse ik nog steeds 12/17/2003 te zien krijg ipv 17-12-2003. Het stomme is dat in bijvoorbeeld Excel de datum wél op de juiste manier laat zien. Waar ligt dit probleem aan?

stp - PSN ID: stp_4


  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 20-08 11:40

gorgi_19

Kruimeltjes zijn weer op :9

Vergeet het goede formatten van een datum in SQL Server; dat zal je een zorg zijn. Het goed weergeven van een datum is een presentatiekwestie; al wil SQL Server een datum als letters opslaan, dat moet hij zelf weten.

Enfin, voor het op te lossen: Zie de CultureInfo class en / of [rml][ ASP.net] valuta instellingen *[/rml]

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • SuperRembo
  • Registratie: Juni 2000
  • Laatst online: 20-08-2025
Ik zou de datum in ASP converteren/parsen naar een DateTime. Als dat gelukt is pas doorgeven aan de sp met behulp van SqlCommandParameters.

| Toen / Nu


  • whoami
  • Registratie: December 2000
  • Laatst online: 17:38
stp_4 schreef op 27 October 2003 @ 16:59:
Op een asp.net pagina wordt een sp aangeroepen waarin een datum wordt ingevoerd. Via deze sp wordt deze datum opgeslagen nadat deze is geconverteerd. In de INSERT querie wordt deze datum alsvolgt converteerd
Waarom moet die datum geconverteerd worden?
Stop je die datum eerst in een string ofzo?

Zoals SuperRembo al aangeeft, kan je beter gebruik maken van parameters. Het goed zetten van de datum in de DB wordt dan allemaal voor jou achter de schermen gedaan.
klik
Op deze manier wordt de datum altijd op 1 en dezelfde manier ingevoerd. Nu zou je verwachten dat als je deze datum weer aanroept in een webpagina hij deze datum in de juiste taal-format laat zien: dus engels = 12/17/2003 en nederlands = 17-12-2003. Het blijkt echter dat als ik mijn taalinstelling wijzig naar de nederlandse ik nog steeds 12/17/2003 te zien krijg ipv 17-12-2003. Het stomme is dat in bijvoorbeeld Excel de datum wél op de juiste manier laat zien. Waar ligt dit probleem aan?
Dit kan je dus goed krijgen door eens gorgi's tips ter harte te nemen.

https://fgheysels.github.io/


  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Zoals ik al vaker heb geroepen: Gebruik de ISO notatie. Werkt altijd.
[rml]RobIII in "[ ASP & SQL] Opslaan en lezen van datum g"[/rml]

Maar omdat de code tags over de rooie zijn, hieronder de juiste code (in C++ tags weliswaar, die werken wel... ;) )

SQL Code:
C++:
1
Insert into MyTabel (myDate) values ('20030726 16:09:00')


Meestal gebruik ik (in ASP) een functie Date2SQL:
C++:
1
2
3
Function Date2SQL(dtWhen)
  Date2SQL = Year(dtWhen) & Right("0" & Month(dtWhen),2) & Right("0" & Day(dtWhen),2) & " " & Right("0" & Hour(dtWhen),2) & ":" & Right("0" & Minute(dtWhen),2)
End Function

of iets dergelijks. Die roep je dan als volgt aan:
C++:
1
2
strMyQuery = "Insert into MyTabel (myDate) values ('" & Date2SQL(Now) & "')"
oConn.Execute strMyQuery


Wat moeilijker, maar nog mooier is "Parametrized Stored Procedures" gebruiken :*)

[ Voor 44% gewijzigd door RobIII op 28-10-2003 02:06 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 20-08 11:40

gorgi_19

Kruimeltjes zijn weer op :9

RobIII schreef op 28 oktober 2003 @ 02:04:
Zoals ik al vaker heb geroepen: Gebruik de ISO notatie. Werkt altijd.
[rml]RobIII in "[ ASP & SQL] Opslaan en lezen van datum g"[/rml]
In dit geval is dat niet nodig, denk ik. Als je gebruik maak van de Calendar control als invoer, is deze iig goed formatted voor de culture. Combineer deze met een cultureinfo, icm een Reg. Exp validator / Custom DatumValidator, en je datum is sowieso goed.

Je hebt dan ook niet de problemen van moeilijk omzetten; cultuurongevoelig (althans, je zit continue in dezelfde cultuur) en hoef je dus niet zelf een goede datum te formatten in SQL.

Daarnaast zijn deze vorm van queries voor de meeste mensen niet geschikt, omdat zij absoluut niet om kunnen gaan met veiligheid en op deze manier SQL Injection mogelijk maken.

Digitaal onderwijsmateriaal, leermateriaal voor hbo

Pagina: 1