i databasen. Vid sparningstillfället står det t.ex. 2005-05-11, men sen när jag kollar med Query Analyzer så har SQL server gjort om det fina formatet till May 11 2005 12:00 AM. Jag vill gärna att att det ska stå 2005-05-11
Jag använder ju inte ens datetime i databasen utan sparar som nvarchar (eftersom det inte gick att anv. datetime pga. tidigare data hade blandat datum/string innehåll).
Nån som vet varför SQL server gör så o hur man kan fixa det...? Det blir extra jobb om man måste konvertera fram och tillbaka, typ när jag sen ska söka baserat på datum så är det enklare om det står 2005-05-11 överallt eller...?
Det är att be om trubbel att använda varcharfält för att lagra datum (varför har du valt nvarchar förresten?). Du borde gå igenom datat och se till så det bara finns korrekta datum i fältet, och sedan ändra datatypen.
hej, jo, jag håller med.. men jag har valt nvarchar av två anledningar:
Jag ändrar en befintlig databas:
1.) Datumen som är inskrivna där är lite "kaos".. ibland står det "05/03/10", ibland "2005-03-10", ibland "050310 av EBS", ibland "20050510/EBS" osv osv.. hur sjutton ska man strukturera om sånt..?
Så jag tänkte att gamla poster får vara så och
2.) alla framtida poster kommer att vara "ok" (tror jag) eftersom det är datorn som skriver in datum... och då får det vara nvarchar... (?)
Funderade en kort stund på att ha en helt ny kolumn så att man får två kolumner; en med strukturerad data och en utan, men då måste jag ju selecta från två kolumner hela tiden och det blir ju jobbibgt också..
eller om du har en idé om hur man kan göra så tackar jag och tar emot... :)
så det är lite det som är det egentliga problemet antar jag..
Men tills vidare kvarstår problemet med att SQL server gör om datum till amerikanskt format.. ?
Nvarchar är unicode, och lagringen tar upp dubbelt så mycket utrymme som ett vanligt varcharfält, det var därför jag undrade. Behöver du verkligen kunna lagra unicode-tecken i fältet?
hur sjutton ska man strukturera om sånt..?
Det får man nog göra manuellt. Hur många poster med felaktigt datumformat handlar det om?
aha.. där ser man.. jag läste nåt om att det tog lite mer plats men att det var flexiblare på nåt sätt.. kommer inte ihåg.. men då ändrar jag till vanlig varchar då...
(om jag försöker ändra till DateTime så får jag ju fel om att "error converting string to DateTime eller nåt, vilket ju är förståeligt pga de olika formaten som dessutom innehåller vanlig text, antar jag..)
hehe.. jag orkar inte ändra om allt manuellt.. det är tusentals poster.. varav många är lite olika som sagt..
om det inte går på annat sätt får jag väl försöka göra om den igen i asp.net.. sökfunktionen blir ju lite krångligare men men.. :)
Eftersom det är ett textfält så sparas exakt det som du lägger in i fältet. Databasen gör ju inte om formatet på datumet bara för att texten du lägger in råkar kunna tolkas som ett datum. Det är ju text du lägger in.
Eftersom du anropar ToShortDateString så är det i ASP.NET som konverteringen görs, inte i databasen. (Varför använder du förresten ToString på strängen sedan?) Ange vilket format du vill ha när du konverterar:
Hej Guffa.. jo, jag blev lite förvånad för jag trodde heller inte att nåt skulle förändras.. hmm.. kanske är ASP.NET ändå.. jag har ju två kolumner, en DateCreated och en DateModified.. det är den senare som krånglar.. så egentligen... hmm.. hann inte kolla mer just nu men ska kolla ikväll igen..
aha.. jag visste inte att man kunde specificera format såsom du visade i själva ToString()..
1.) Datumen som är inskrivna där är lite "kaos".. ibland står det "05/03/10", ibland "2005-03-10", ibland "050310 av EBS", ibland "20050510/EBS" osv osv.. hur sjutton ska man strukturera om sånt..?
Du kan göra egna format den ska försöka parsa strängen till, kolla mer på funktionen ParseExact.
a intressant.. det stod ju "Assume the current culture is en-US" så man kanske måste göra olika antaganden o sen loopa igenom alla poster under dessa antaganden o uppdatera databasen med expected format.. o hoppas att "biprodukterna" EBS osv står kvar för om alla datum har enhetligt format är det ju inte så svårt (tror jag) att parsa ut EBS o.d. till en separat kolumn.. får väl testa lite..
o det där cultureinfo kan man kanske använda för att försäkra sig om att inte ASP.NET gör om datum till amerikanskt innan den gör insert till databasen... antar att det blir sv-SE eller nåt..
tack för förslaget.. :)
254 ms totalt · 3 externa anrop · v20260731065814-full.4bcf49fe