---
title: "Använda Left() i ett villkor?"
type: "forum-thread"
url: "https://www.webforum.nu/amne/databaser-sql/180690-använda-left-i-ett-villkor"
topic: "Databaser & SQL"
topic_url: "https://www.webforum.nu/amne/databaser-sql"
author: "evilaid"
published: "2009-10-13T12:07:42.000Z"
updated: "2009-10-13T12:56:44.000Z"
replies: 17
views: 587
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/180690-använda-left-i-ett-villkor"
---

# Använda Left() i ett villkor?

## #1 — evilaid, 2009-10-13T12:07Z

Hej igen

Ska man inte kunna använda left()funktionen i ett villkor?

Provade 

```
SELECT     * 
FROM hits
WHERE  LEFT(c_date,10) = '2009-10-13'
```

c_date har formatet date/time så de första 10 tecknen är ju datumet..

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

## #2 — @nders, 2009-10-13T12:12Z

Du ska inte använda strängfunktioner som LEFT på datum - du *vet* inte hur datumet är lagrat. Använd datumfunktioner istället.

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

## #3 — SPiN, 2009-10-13T12:14Z

Med andra ord;

```
select
    *
from
    hits
where
    date_format(c_date, '%y-%m-%d') = '2009-10-13'
```

I MySQL.

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

## #4 — evilaid, 2009-10-13T12:19Z

klantigt av mig att inte skriva med att det är MS sql som används... Hur skulle det se ut?

@nders: Förstår inte vad du menar med att jag inte vet hur dte är lagrat? Jag har ju sj angett i databasen formatet, eller?

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

## #5 — SPiN, 2009-10-13T12:24Z

Jag är lite osäker då jag inte sitter så mycket vid SQL Server. SQL Server har sämre utbud av datumfunktioner som jag har förstått det, men det borde kunna lösas med 'convert'.

```
select
    *
from
    hits
where
    convert(char(8), c_date, 112) = '20091013'
```

Det verkar inte som att 'convert' kan hantera speciellt många datumformat, YYYY-mm-dd verkar inte finnas tillgängligt.

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

## #6 — @nders, 2009-10-13T12:26Z

Hur har du angett formatet?

Jag hoppas bara att du inte menar att du lagrar datum i varchar-fält eller liknande.  :)

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

## #7 — evilaid, 2009-10-13T12:28Z

hahahha, jag blir osäker nu...

Jag har ju valt date/time format i tabellen så det sparas ju i formatet 2009-09-10 12:00:00.. Tror ja?

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

## #8 — evilaid, 2009-10-13T12:35Z

Hittade en funktion som heter format på wschools men får bara felmeddealnde i visual studio att det inte känner igen funktionen??

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

## #9 — @nders, 2009-10-13T12:38Z

> **[evilaid skrev:](https://www.webforum.nu/p/1483934)**
>
> hahahha, jag blir osäker nu...
> 
> Jag har ju valt date/time format i tabellen så det sparas ju i formatet 2009-09-10 12:00:00.. Tror ja?

Nej, datum sparas internt av SQL server som två 4-bytes integers. 

<http://www.sql-server-performance.com/articles/dev/datetime_datatype_p1.aspx>

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

## #10 — evilaid, 2009-10-13T12:41Z

Ok ok...

känner du till funktionen format då som inte vill fungera? eller någon anna funktionen så att jag få fram ett specifikt datum?

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

## #11 — @nders, 2009-10-13T12:41Z

Fungerade inte LarsGs förslag?

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

## #12 — evilaid, 2009-10-13T12:42Z

DATETIME Data is Stored in a Readable Format
Sure!

SELECT CAST(GETDATE() AS BINARY(8)) AS WhatIsReallyStored

WhatIsReallyStored

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

## #13 — evilaid, 2009-10-13T12:43Z

hittar inget förslag från LarsG

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

## #14 — SPiN, 2009-10-13T12:47Z

:'( Jag tror (och hoppas!) att @nders menar mig, och inte LarsG.

Självklart är det inte läsligt om du kastar om det till binär representation. Kasta om det till en sträng så kan du antagligen läsa det.

Fungerade inte convert()? \_Måste\_ du ha det i formatet yyyy-mm-dd, yyyymmdd fungerar inte eller? Du kan plocka ut all information med 'year()', 'month()' eller 'day()' och sätta ihop det till en sträng annars - och jämföra mot in-parametern. 'convert()' är ju däremot mycket smidigare att använda.

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

## #15 — @nders, 2009-10-13T12:50Z

> **[SPiN skrev:](https://www.webforum.nu/p/1483944)**
>
> :'( Jag tror (och hoppas!) att @nders menar mig, och inte LarsG.

Vafan!

Självklart, jag skrev fel - förlåt, Björnis! :'(

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

## #16 — evilaid, 2009-10-13T12:50Z

jag som missade lite... Provade ditt exempel nu och det fungerade fint... Konstigt att det inte går då det i yyyy-mm-dd??

Det är ju det formatet som automatiskt används överallt i min kod...

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

## #17 — SPiN, 2009-10-13T12:54Z

Nu hittade jag till MSDNs referenslista över funktioner, och det går att få i s.k. italiensk stil (yyyy-mm-dd).

```
select
    *
from
    hits
where
    convert(char(8), c_date, 105) = '2009-10-13'
```

@nders - no hard feelings. ;)

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

## #18 — evilaid, 2009-10-13T12:56Z

Oj fan va bra!!!
Jag använder session.LCID =1053 så då blir dte ju alltid i det formatet? Trodde det var att man ställde om serverna till svenska formatet?

Tack grabbar för hjälppen...

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

---

Tråden på webben: https://www.webforum.nu/amne/databaser-sql/180690-använda-left-i-ett-villkor
