---
title: "Konvertera årtal till Datetime"
type: "forum-thread"
url: "https://www.webforum.nu/amne/databaser-sql/148089-konvertera-årtal-till-datetime"
topic: "Databaser & SQL"
topic_url: "https://www.webforum.nu/amne/databaser-sql"
author: "Obbelix"
published: "2006-06-15T08:38:46.000Z"
updated: "2006-06-19T10:00:29.000Z"
replies: 2
views: 467
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/databaser-sql/148089-konvertera-årtal-till-datetime"
---

# Konvertera årtal till Datetime

## #1 — Obbelix, 2006-06-15T08:38Z

Hej.

Har en tabell innhållande ett par tusen spelare (personer) som när systemet byggdes angavs med endast födelseår. Nu ska detta ändras så alla ska anges med åååå-mm-dd i en Datetime. Behöver då samtidigt konvertera alla redan inlagda till det nya och undrar då om man kan göra det i en enda sql-sats?

Idag är fältet av typen Varchar och innehåller årtal med både två och fyra siffor. Alla är dock födda på 1900-talet så om det är angivet med två siffror ska 19 läggas till framför.
De ska i det nya fältet få månad och dag 01 (ex. 80 -\> 1980-01-01)

Nuvarande tabell

```
id  |  namn  |  player_year  |  player_born
3      Peter    78
4      Kalle    1979
6      Nisse    82
```

Önskat resultat:

```
id  |  namn  |  player_year  |  player_born
3      Peter    78              1978-01-01
4      Kalle    1979            1979-01-01
6      Nisse    82              1982-01-01
```

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

## #2 — Brimba, 2006-06-19T07:58Z

Detta borde fungera.

```
DECLARE @table table (id int, namn varchar(50), player_year varchar(4))

INSERT INTO @table
	SELECT 3,'Peter','78'
	UNION ALL 
	SELECT 4,'Kalle','1979'
	UNION ALL 	
	SELECT 6,'Nisse','82'

SELECT 
	id, namn, player_year,
	(CASE WHEN LEN(player_year) = 2 THEN DATEADD(year, CAST(player_year AS INT), '1900-01-01') ELSE CAST(player_year AS SMALLDATETIME) END) AS player_birth
FROM 
	@table
```

Notera att du inte behöver ha med all kod utan det du behöver kolla på är CASE-satsen.

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

## #3 — Obbelix, 2006-06-19T10:00Z

Tackar!

Modifierade case-satsen då det fanns några fält som var tomma osv, men fick det att funka till slut.

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

---

Tråden på webben: https://www.webforum.nu/amne/databaser-sql/148089-konvertera-årtal-till-datetime
