Avatar billede boleole Nybegynder
14. juni 2001 - 18:21 Der er 21 kommentarer og
1 løsning

Dansk datoformat / engelsk datoformat

Hej!

Jeg oensker at have en (MySQL)database bag/under (?) min kalender (lavet i ASP), hvor jeg vil registrere forskellige begivenheder.

Jeg har to problemer.
1.) Jeg kan ikke finde/bruge \'DATE\' som en \"felttype\", naar jeg opretter mit dato-felt i databasen. Hvis jeg \"koerer\":

conn.Execute \"ALTER TABLE [dbo].[mindatabase] ADD oprettet DATE\"

faar jeg:

Microsoft OLE DB Provider for ODBC Drivers error \'80040e14\'

[Microsoft][ODBC SQL Server Driver][SQL Server]Column or parameter #5: Cannot find data type DATE

Men hvis jeg aendre \'DATE\' til \'DATETIME\', bliver kolonnen tilfoejet uden problemer. Hvilken type kan jeg bruge, hvis jeg bare oensker \'dd-mm-yyyy\'?

2.) Naar jeg saa tilfoejer \'now\' (12-06-2001 12:05) til \'oprettet\'-feltet og henter datoen, faar jeg en \"decemberdato\" (06-12-2001 12:05) (det var i forgaars).

Kan jeg ikke aendre database-indstillinger til danske??? Eller bliver jeg noedt til at aendre datoen hver gang, jeg henter den fra databasen?

Jeg er ked af, hvis dette er et gentaget spoergsmaal, men jeg kunne ikke se det i foerste omgang...

Paa forhaand tak!
Avatar billede ladyhawke Novice
14. juni 2001 - 19:00 #1
Så videt jeg kan se vil MySQL altid forsøge at fortolke en dato efter amerikansk (britisk?) forbillede (mm-dd-yyyy), men du burde kunne bruge DATE_FORMAT(dato der skal konverteres, format) f.eks.:
DATEFORMAT(06-12-2001, %d-%m-%Y) som skulle returnere: 12-06-2001

Du kan se mere om det her:
http://www.mysql.com/doc/D/a/Date_and_time_functions.html
Avatar billede boleole Nybegynder
14. juni 2001 - 19:10 #2
OK, saa du siger, at det ikke er muligt at aendre database-land-opsaetningen og, at jeg bliver noedt til at aendre datoen HVER gang, jeg henter den fra databasen!?

Hvad med typen - er der ikke en, som vil lade mig gemme min dato som \"dd-mm-yyyy\" eller i det mindste uden klokken?
Avatar billede ladyhawke Novice
14. juni 2001 - 19:22 #3
Det kan godt være at det kan lade sig gøre men denne konstruktion har jeg fundet på MySQL\'s mailingliste hos en der også ville have et bestem dato-format:
select DATE_FORMAT((dato), \'%d-%m-%Y\') from (tabel)

Er det virkelig så slemt at bruge den konstruktion, du kan vel lave en funktion der håndterer det?
Avatar billede boleole Nybegynder
14. juni 2001 - 19:28 #4
Hvad goer jeg saa, hvis jeg oenkser at hente andre kolonner udover dato-kolonnen?

SELECT DATE_FORMAT((dato), \'%d-%m-%Y\'), * FROM (tabel)

eller hvordan?
Avatar billede ladyhawke Novice
14. juni 2001 - 19:33 #5
SELCET DATE_FORMAT((dato), \'%d-%m-%Y\'), colonne1, coloone2, .... where (statement) ?!?
Avatar billede ladyhawke Novice
14. juni 2001 - 19:36 #6
Hmm der skulle nu have stået SELECT, men: \"DATE_FORMAT((dato), \'%d-%m-%Y\')\" kan faktisk opfattets som en kolonne på lige fod med en hver anden i forhold til dit select statement. Det svarer bare til at du havde skrevet:

Select \"kolonne0\", \"kolonne1\" from tabel where a=b eller sådan noget i den stil...
Avatar billede boleole Nybegynder
14. juni 2001 - 19:36 #7
Saa hvis jeg har 20 kolonner og skal bruge data fra alle 20, bliver jeg noedt til at kalde dem alle?
Avatar billede boleole Nybegynder
14. juni 2001 - 19:37 #8
Du kender ikke noget til typerne?
Avatar billede boleole Nybegynder
14. juni 2001 - 19:42 #9
Jeg kan bare ikke forstaa, at jeg ikke kan bruge \'DATE\' men \'DATETIME\' er der ingen problemer med. Hvad er navnet paa typen som kun lagrer datoen (uden tiden)?
Avatar billede ladyhawke Novice
14. juni 2001 - 19:49 #10
Jvf. den bog jeg kiggede i så er DATE den rigtige type, men dit problem ser ud til at stamme fra ODBC driveren ikke fra MySQL.

Mht. SELECT-statement så kan det godt være at man kan lave en konstruktion hvor man laver den ønskede konvertering og samtidig får fat i de andre søjler, men jeg ved ikke hvordan. Det er dog ikke noget problem hvis du laver en funktion/procedure der håndterer din forespørgsel, så skal du kune skrive kolonne navnene én gang og du kan blot indsætte de relevante oplysninger i forespørgslen vha. funktionen.
Avatar billede boleole Nybegynder
14. juni 2001 - 19:54 #11
Men hvordan kan det vaere, at naar jeg tilfoejer \'12-06-2001\' og databasen tilsyneladende gemmer datoen som \'2001-06-12\', at jeg saa faar \'06-12-2001\' naar jeg henter min dato?
Avatar billede ladyhawke Novice
14. juni 2001 - 19:56 #12
Jeg ved det ikke, måske har det noget at gøre med den version du bruger af MySQL, men løser mit forslag ikke dit problem?
Avatar billede alvion Nybegynder
14. juni 2001 - 20:06 #13
Først og fremmest: Du prøver at bruge MS Sql Server og ikke MySQL. Både med din ODBC driver men også på den måde du har bygget din sql-sætning op

conn.Execute \"ALTER TABLE [dbo].[mindatabase] ADD oprettet DATE\"

DATE er ikke en datatype i MS Sql Server - den hedder noget andet (vist nok DATETIME).

Men tilbage til at du sikkert *vil* bruge MySQL istedet. Din alter-sætning skal lyde:

ALTER TABLE tabel-navn ADD oprettet DATE

Dit \"conn\" objekt forbinder til en MSSQL, det skal laves om. Du bruger sikkert en connection string der indeholder

\"DRIVER={SQL Server};server=localhost;uid=brugernavn;pwd=et-password;...\"

den skal istedet lyde således:

\"DRIVER={MySQL};server=localhost;uid=brugernavn;pwd=password;database=din-database\"
Avatar billede thaufer Nybegynder
14. juni 2001 - 20:07 #14
opretter du ikke forbindelse til en SQL Server i stedet for en mySQL Server???
Avatar billede boleole Nybegynder
14. juni 2001 - 20:12 #15
MY BAD!!!!!

Det maa I alle virkelig undskylde - hvor dum kan jeg vaere! Jeg har ikke adgang til mySQL, da jeg bruger ASP. Til gengaeld har jeg adgang til en SQL Server 7...

Aendre det noget???
Avatar billede alvion Nybegynder
14. juni 2001 - 20:18 #16
Du kan da godt have adgang til MySQL med ASP - det har jeg da brugt i 2 år... ;-)
Avatar billede ladyhawke Novice
14. juni 2001 - 20:20 #17
JA! De forslag jeg kom med er baseret på MySQL og det er denne kategori også! Når det er sagt så får du måske svar alligevel, men det var nok en god ide at placere spørgsmålet rigtigt og desuden så kender jeg ikke noget til ASP men hvorfor kan du ikke bruge MySQL med ASP? Er det ikke bare et spørgsmål om driver og den rigtige connection?
Avatar billede boleole Nybegynder
14. juni 2001 - 20:20 #18
Ahh, ok. Min udbyder tilbyder dog ikke dette - saa skal man koere med PHP...
Avatar billede boleole Nybegynder
14. juni 2001 - 20:22 #19
Er det saa muligt at aendre sprog-opsaetningen i SQL Serveren?
Avatar billede boleole Nybegynder
14. juni 2001 - 20:28 #20
ladyhawke>> Jeg er meget ked af min dumhed! Jeg vil dog gerne give dig nogle points for din tid - selvom du ikke rigtig loeste mit problem (men det er min skyld).
Avatar billede ladyhawke Novice
14. juni 2001 - 20:34 #21
Det er OK, jeg håber du finder ud af det alligevel, jeg kan bare ikke hjælpe da jeg hverken bruger ASP eller MS SQL :-)
Avatar billede jmc Nybegynder
23. oktober 2002 - 12:47 #22
hvad med at skrive
  <% session.LCID = 1030 %>
øverst i dokumentet?
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester