---
title: "från varchar till date"
type: "forum-thread"
url: "https://www.webforum.nu/amne/asp/178725-från-varchar-till-date"
topic: "ASP"
topic_url: "https://www.webforum.nu/amne/asp"
author: "dendålige"
published: "2009-05-25T11:37:13.000Z"
updated: "2009-06-02T23:14:28.000Z"
replies: 16
views: 967
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/asp/178725-från-varchar-till-date"
---

# från varchar till date

## #1 — dendålige, 2009-05-25T11:37Z

Hej! det är så att jag har sparat datum som text och när man nu ändrar om så ändras ju alla datum till 0000-00-00 eller liknande. jag har även spart i text under 3 olika fält år, månad, dag. så även om jag ändrar format till dateTime så har jag kvar infon som behövs.

Frågan är nu om jag på något smart sätt, förmodligen göra en update fråga från dom andra tabellerna, men har fått tomt i huvudet hur den isåfall ska se ut och hur jag ser till att den uppdaterar så det fungerar till datetime.

Förstår ni hur jag menar? =)

Permalänk: https://www.webforum.nu/p/178725

## #2 — Jojoxx, 2009-05-25T11:58Z

Om jag förstår dig rätt har du en databas, innehållande en tabell med ett fält i formatet varchar som du vill konvertera till datum-format?

Lösning 1) Enklast utan utan programmering - Exportera databasen (vilken motor du nu använder) till ms-access som är rätt duktigt på att gissa datumformat. Ändra det aktuella fältet till "Datum/tid" i access och exportera tillbaks datanbasen.

Lösning 2) Skapa ett nytt fält i den befintliga databasen. Gör ett script som snurrar igenom alla poster i databasen, läser ditt varchar-fält och skriver tillbaks det (update) till det nya datumfältet. Är datat i ditt varchar-fält automatiskt genererat så att det alltid har samma format är ju detta enkelt.

Svårt att ge ett mer konkret svar när man inte vet förutsättningarna. Är databasen i grund och botten en access-databas är ju alternativ 1 allra enklast. Bara att plocka ner databasen lokalt och göra konverteringen.

Permalänk: https://www.webforum.nu/p/2185732

## #3 — dendålige, 2009-05-31T09:05Z

datumet är sparat t.ex 22/2/2009  hur skriver jag om den varchar till ett nytt fält som är av typen Date och ska bli 2009-02-22

försöker köra typ:
Connect.Execute "UPDATE statte_saljare SET datumet2 = "&RecSet("datum")&" where id = '"&RecSet("id")&"'"

Men den fungerar inte. får inge fel, bara att dne inte uppdaterar och fältet är fortfarande 0000-00-00

Tacksamm för hjälp

Permalänk: https://www.webforum.nu/p/2186200

## #4 — nitro2k01, 2009-05-31T09:34Z

```
Connect.Execute "UPDATE statte_saljare SET datumet2 = '" & RecSet("datum") & "' where id = " & RecSet("id")
```

Fnuttfel...
För det första bör datumet nog vara inneslutet av enkelfnuttar. För det andra bör nog id'et inte vara det. (Jag gissar att id är ett tal av något slag) Sen kan du utöver det behöva konvertera datumformatet. (Vet ej exakt hur MSSQL hanterar det)

Permalänk: https://www.webforum.nu/p/2186201

## #5 — dendålige, 2009-05-31T09:50Z

har testat med det sättet också. det är mera att jag måste göra om strängen så att det passar fälttypen Date

Permalänk: https://www.webforum.nu/p/2186202

## #6 — dendålige, 2009-06-02T15:03Z

ingen som sitter med en bra och smart lösning? det jag ska göra är andra uppdatera en kolumn med texten 2/2/2009 som är varchar så att det blir rätt typ i ett annat fält som ska vara Date och alltså inte text. och den ska visa 2009-02-02.

Permalänk: https://www.webforum.nu/p/2186380

## #7 — LarsG, 2009-06-02T16:33Z

Vilken databashanterare är det?

Permalänk: https://www.webforum.nu/p/2186392

## #8 — dendålige, 2009-06-02T20:47Z

jag kör med mySQL... och det webbhotellet jag har så kör man allt via phpmyadmin...

Permalänk: https://www.webforum.nu/p/2186430

## #9 — nitro2k01, 2009-06-02T21:35Z

Du kan göra det helt i SQL. (Alltså utan PHP-kodning) 
Kör denna fråga i SQL-prompten: (Det finns en sådan i phpMyAdmin)

```
UPDATE statte_saljare 
SET `datumet2` = CONCAT(
  SUBSTRING_INDEX(`datum`, '/', -1), '-', 
  SUBSTRING_INDEX(SUBSTRING_INDEX(`datum`, '/', 2), '/', -1), '-', 
  SUBSTRING_INDEX(`datum`, '/', 1)
);
```

När du har bekräftat att datumen har konverterats korrekt kan du ta bort ursprungskolumnen.

Permalänk: https://www.webforum.nu/p/2186437

## #10 — dendålige, 2009-06-02T21:53Z

tack så mycket, det fungerar nästan helt perfekt. men den har sparat datumet såhär 2/14/2009 alltså månad/dag/år

scriptet du skrev var för dag/månad/år... tror du att ud kan hjälpa mig o ändra den kod du skrev så den fungerar?

Permalänk: https://www.webforum.nu/p/2186440

## #11 — nitro2k01, 2009-06-02T22:01Z

Jag utgick från ditt exempel: 

> **[dendålige skrev:](https://www.webforum.nu/p/1469413)**
>
> datumet är sparat t.ex 22/2/2009  hur skriver jag om den varchar till ett nytt fält som är av typen Date och ska bli 2009-02-22

Så här ska det se ut då:

```
UPDATE statte_saljare 
SET `datumet2` = CONCAT(
  SUBSTRING_INDEX(`datum`, '/', -1), '-', 
  SUBSTRING_INDEX(`datum`, '/', 1), '-', 
  SUBSTRING_INDEX(SUBSTRING_INDEX(`datum`, '/', 2), '/', -1)
);
```

Permalänk: https://www.webforum.nu/p/2186442

## #12 — dendålige, 2009-06-02T22:07Z

tack, lyckades klura ut det också... tack så mycket för hjälpen!!! vet du hur jag får så att sidan skriver ut som lcid =1053, men fungerar inte på detta webbhotel. 

För om jag kör RecSet("datum") nu så skriver den fortfarande ut det som 2/22/2009 även fast det står 2009-02-22 i databasen med Date

Permalänk: https://www.webforum.nu/p/2186444

## #13 — Brimba, 2009-06-02T22:16Z

Menar du

```
Session.LCID = 1053
```

Permalänk: https://www.webforum.nu/p/2186445

## #14 — nitro2k01, 2009-06-02T22:19Z

Jag vet inte hur du automatiskt koverterar till valfritt LCID, men vill du ha svenskt format kan du göra så här t ex:

```
SELECT DATE_FORMAT(`date`, '%Y-%m-%d') AS datum, ...
eller
SELECT DATE_FORMAT(`date`, '%e/%c-%Y') AS datum, ...
```

ASP har säkert några nyttiga funktioner också om du letar lite.

Permalänk: https://www.webforum.nu/p/2186446

## #15 — nitro2k01, 2009-06-02T22:22Z

> **[Brimba skrev:](https://www.webforum.nu/p/1469697)**
>
> Menar du
>
>
> ```
> Session.LCID = 1053
> ```

Fast då måste man nog mata datumsträngen genom en ASP-funktion för att konvertera den. Vad den funktionen heter vet inte jag då jag inte är bekant med ASP.

Permalänk: https://www.webforum.nu/p/2186447

## #16 — Brimba, 2009-06-02T23:09Z

> **[nitro2k01 skrev:](https://www.webforum.nu/p/1469699)**
>
> Fast då måste man nog mata datumsträngen genom en ASP-funktion för att konvertera den. Vad den funktionen heter vet inte jag då jag inte är bekant med ASP.

```
FormatDateTime(datum, 2)
```

Permalänk: https://www.webforum.nu/p/2186457

## #17 — nitro2k01, 2009-06-02T23:14Z

> **[Brimba skrev:](https://www.webforum.nu/p/1469709)**
>
> ```
> FormatDateTime(datum, 2)
> ```

Respekterar FormatDateTime det LCID som man sätter i session?

Permalänk: https://www.webforum.nu/p/2186458

---

Tråden på webben: https://www.webforum.nu/amne/asp/178725-från-varchar-till-date
