Vinnaren i pepparkakshustävlingen!
2013-11-28, 13:33
  #1
Medlem
Hej,

jag är på SQL Server 2012 och försöker joina två tabeller på datum men stött på första problem.

tabell X har datum format '18FEB2000' medan den andra tabellen, Y, har 20000218.

Jag får meddelandet error varchar to int.

Jag har försökt göra : convert(int,variablenamn,112)

också försökt cast(variabelnamn, as int) men det går inte.

Hur konverterar jag tabell X datum format till Ys format?


Ps: det är 4 miljoner datum jag måste byta datum format på.
Citera
2013-11-28, 13:37
  #2
Medlem
Abbadohns avatar
Du kan väl inte göra X till en integer då X innehåller bokstäver? Leder ingenstans men men. Ska du göra detta på servern eller kan du använda dig av t.ex. en php-fil?
Citera
2013-11-28, 13:42
  #3
Medlem
Citat:
Ursprungligen postat av Abbadohn
Du kan väl inte göra X till en integer då X innehåller bokstäver? Leder ingenstans men men. Ska du göra detta på servern eller kan du använda dig av t.ex. en php-fil?

vad föreslår du jag ska göra? eftersom filen är 4 miljoner rader, kan det bli långsamt på excel och sånt. Jag får väl göra det på SQL Server. Men lyckas inte.

andra föreslag?

tack Abbadohn|46345201]
Citera
2013-11-28, 13:58
  #4
Medlem
Abbadohns avatar
Citat:
Ursprungligen postat av tiagoinho
vad föreslår du jag ska göra? eftersom filen är 4 miljoner rader, kan det bli långsamt på excel och sånt. Jag får väl göra det på SQL Server. Men lyckas inte.

andra föreslag?

tack Abbadohn|46345201]
Så som jag uppfattar det ligger tabell X och tabell Y i en databas. För varje rad hämtar du X, delar upp den som du vill och sätter ihop den som du vill. Sedan sätter du in den i Y.
Citera
2013-11-28, 15:19
  #5
Medlem
Citat:
Ursprungligen postat av Abbadohn
Så som jag uppfattar det ligger tabell X och tabell Y i en databas. För varje rad hämtar du X, delar upp den som du vill och sätter ihop den som du vill. Sedan sätter du in den i Y.

SELECT convert(varchar, variablename, 112)

körde den ovan och den fungerade. Hur ska jag ersätta mina nuvarande värden?

jag körde select replace(convert(varchar,variablename,112) och det gick inte att ersätta mina nuvarande värden.
Citera
2013-11-28, 16:18
  #6
Medlem
christerys avatar
Citat:
Ursprungligen postat av tiagoinho
SELECT convert(varchar, variablename, 112)

körde den ovan och den fungerade. Hur ska jag ersätta mina nuvarande värden?

jag körde select replace(convert(varchar,variablename,112) och det gick inte att ersätta mina nuvarande värden.

Ehh, update heter det väl http://www.w3schools.com/SQl/sql_update.asp
Citera
2013-11-28, 20:57
  #7
Medlem
Kan det möjligtvis vara REPLACE eller UPDATE? SELECT REPLACE låter lite .. mashat.. Det är iofs parentesfel i koden där, så det är ju inte exakt den som kördes.
Citera
2013-11-29, 10:07
  #8
Medlem
Abbadohns avatar
Kod:
$a $db->prepare("SELECT x FROM tabellen(vet inte hur din databas ser ut)");
$a->execute();

foreach(
$a as $row) {
    
$whole_x $row['x'];
    
$day substr($whole_x02);
    
$month substr($whole_x23);
    
$year substr($whole_x54);

    
sql för att sätta in de i den tabellen du vill();

Liten början. Eftersom du har sparat månaden i bokstäver behöver du köra något skript som bestämmer vilken månad i siffror de olika bokstavskombinationerna har.
Citera

Stöd Flashback

Flashback finansieras genom donationer från våra medlemmar och besökare. Det är med hjälp av dig vi kan fortsätta erbjuda en fri samhällsdebatt. Tack för ditt stöd!

Stöd Flashback