/ Forside / Teknologi / Udvikling / PHP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
PHP
#NavnPoint
rfh 3959
natmaden 3372
poul_from 3310
funbreak 2700
stone47 2230
Jin2k 1960
Angband 1743
Bjerner 1249
refi 1185
10  Interkril.. 1146
Ændre placering af tal
Fra : Aagaard


Dato : 12-11-05 08:03

Jeg trækker følgende data fra en MySql db:
15.10.2005 // en indtastet dato
For at kunne sortere på datoen skal tallene 'vendes' til:
20051015
Hvordan gøres det?

Der trækkes også MySql data:
901000010
Som skal udskrives:
01000-10
9 fjernes. 3. sidste tal laves til en bindestreg.
Hvordan gøres det?

Link elle hjælp søges.

--
Aagaard



 
 
Ukendt (12-11-2005)
Kommentar
Fra : Ukendt


Dato : 12-11-05 10:07

> 15.10.2005 // en indtastet dato
> For at kunne sortere på datoen skal tallene 'vendes' til:
> 20051015
> Hvordan gøres det?

Du kan blot sortere i din sql - ".... ORDER BY dateField....."

> Der trækkes også MySql data:
> 901000010
> Som skal udskrives:
> 01000-10
> 9 fjernes. 3. sidste tal laves til en bindestreg.
> Hvordan gøres det?

Funktionen "substr" skulle kunne dette.

- Daniel



Aagaard (13-11-2005)
Kommentar
Fra : Aagaard


Dato : 13-11-05 08:00

>> 15.10.2005 // en indtastet dato
>> For at kunne sortere på datoen skal tallene 'vendes' til:
>> 20051015
>> Hvordan gøres det?
>
> Du kan blot sortere i din sql - ".... ORDER BY dateField....."
>
Desværre er feltet et VARCHAR felt, ikke et datofelt, men jeg kan gøre det
med "substr".

>> Der trækkes også MySql data:
>> 901000010
>> Som skal udskrives:
>> 01000-10
>> 9 fjernes. 3. sidste tal laves til en bindestreg.
>> Hvordan gøres det?
>
> Funktionen "substr" skulle kunne dette.
>

Tak for hjælpen

--
Aagaard



Ukendt (13-11-2005)
Kommentar
Fra : Ukendt


Dato : 13-11-05 11:51

> Desværre er feltet et VARCHAR felt, ikke et datofelt, men jeg kan gøre det
> med "substr".

Hvorfor om jeg må spørge? At bruge andet end en dato-type til datoer giver
ingen mening.

- Daniel



Aagaard (13-11-2005)
Kommentar
Fra : Aagaard


Dato : 13-11-05 14:29

> Hvorfor om jeg må spørge? At bruge andet end en dato-type til datoer giver
> ingen mening.
>
> - Daniel
Det kan jeg desværre ikke give dig et svar på, sådan er db lavet i sin tid.
Jeg er ingen sql ørn ... endnu, håber det kommer.

--
Aagaard



Peter Brodersen (13-11-2005)
Kommentar
Fra : Peter Brodersen


Dato : 13-11-05 15:37

On Sat, 12 Nov 2005 08:02:39 +0100, "Aagaard" <nomail@nomail.inv>
wrote:

>Jeg trækker følgende data fra en MySql db:
>15.10.2005 // en indtastet dato
>For at kunne sortere på datoen skal tallene 'vendes' til:
>20051015
>Hvordan gøres det?

Ud over den løftede pegefinger med det uhensigtsmæssige dataformat kan
du kigge i manualen om mulige streng-funktioner:
http://dev.mysql.com/doc/refman/5.0/en/string-functions.html

SUBSTRING() og venner kan benyttes.

Bemærk dog, at når du sorterer og/eller sammenligner med en værdi, du
danner on-the-fly, kan et eventuelt index ikke benyttes. Det behøver
ikke nødvendigvis at være et problem.

>Der trækkes også MySql data:
>901000010
>Som skal udskrives:
>01000-10
>9 fjernes. 3. sidste tal laves til en bindestreg.
>Hvordan gøres det?

SUBSTRING() og CONCAT() kan benyttes her.

--
- Peter Brodersen

Aagaard (13-11-2005)
Kommentar
Fra : Aagaard


Dato : 13-11-05 21:02

>>Jeg trækker følgende data fra en MySql db:
>>15.10.2005 // en indtastet dato
>
> Ud over den løftede pegefinger med det uhensigtsmæssige dataformat kan
> du kigge i manualen om mulige streng-funktioner:
> http://dev.mysql.com/doc/refman/5.0/en/string-functions.html
>
Jeg er klar over at datoen bør være i et datofelt - ikke i et varchar felt,
men hvordan kan jeg ændre det?
Jeg har prøvet at ændre feltet til datofelt, men det ændrede samtlige
indtastede datoer til ukendelighed.
Alle datoer er indtastet som dd.mm.yyyy eller d.m.yyyy (uden 0 foran 1-9).

Tak for hjælp med SUBSTRING() og CONCAT(). Det virker perfekt.

--
Aagaard



Peter Brodersen (14-11-2005)
Kommentar
Fra : Peter Brodersen


Dato : 14-11-05 03:40

On Sun, 13 Nov 2005 21:01:30 +0100, "Aagaard" <nomail@nomail.inv>
wrote:

>>>Jeg trækker følgende data fra en MySql db:
>>>15.10.2005 // en indtastet dato
>> Ud over den løftede pegefinger med det uhensigtsmæssige dataformat kan
>> du kigge i manualen om mulige streng-funktioner:
>> http://dev.mysql.com/doc/refman/5.0/en/string-functions.html
>Jeg er klar over at datoen bør være i et datofelt - ikke i et varchar felt,
>men hvordan kan jeg ændre det?

Spørgsmålet er egentligt et SQL-relateret spørgsmål, så
dk.edb.database er nok en passende nyhedsgruppe til en anden gang -
der sidder også flere kloge hoveder

>Jeg har prøvet at ændre feltet til datofelt, men det ændrede samtlige
>indtastede datoer til ukendelighed.
>Alle datoer er indtastet som dd.mm.yyyy eller d.m.yyyy (uden 0 foran 1-9).

Det er kun hvis datoerne "ligner" datoer i MySQLs format (yyyy-mm-dd),
at de kan konverteres uden videre.

En mulighed for at konvertere datoerne er fx:

UPDATE tabel
SET datofelt = CONCAT_WS(
'-',
SUBSTRING_INDEX(datofelt,'.',-1),
MID(SUBSTRING_INDEX(datofelt,'.',2),LOCATE('.',datofelt)+1,2),
SUBSTRING_INDEX(datofelt,'.',1)
);

... og så derefter konvertere:

ALTER TABLE tabel CHANGE datofelt datofelt DATE;

(det kan måske laves smartere, men det virker om ikke andet)

--
- Peter Brodersen

Aagaard (24-11-2005)
Kommentar
Fra : Aagaard


Dato : 24-11-05 07:55

"Peter Brodersen" <usenet2005@ter.dk> skrev:
>
> En mulighed for at konvertere datoerne er fx:
>
> UPDATE tabel
> SET datofelt = CONCAT_WS(
> '-',
> SUBSTRING_INDEX(datofelt,'.',-1),
> MID(SUBSTRING_INDEX(datofelt,'.',2),LOCATE('.',datofelt)+1,2),
> SUBSTRING_INDEX(datofelt,'.',1)
> );
>
> .. og så derefter konvertere:
>
> ALTER TABLE tabel CHANGE datofelt datofelt DATE;
>
Jeg skulle lige have rettet alle datoerne, og kørte derefter dit script.
Det virker perfekt. Tusind tak for hjælpen.

--
Aagaard



Søg
Reklame
Statistik
Spørgsmål : 177552
Tips : 31968
Nyheder : 719565
Indlæg : 6408849
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste