---
title: "Problem SQL-Syntax"
type: "forum-thread"
url: "https://www.webforum.nu/amne/databaser-sql/171321-problem-sql-syntax"
topic: "Databaser & SQL"
topic_url: "https://www.webforum.nu/amne/databaser-sql"
author: "Almapeso"
published: "2008-05-08T06:36:20.000Z"
updated: "2008-05-11T07:00:11.000Z"
replies: 1
views: 544
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/171321-problem-sql-syntax"
---

# Problem SQL-Syntax

## #1 — Almapeso, 2008-05-08T06:36Z

Hej!
Jag har ett problem med en SQL-Syntax som känns relativt enkel men idé-fabriken har tagit tidig semester.
Jag ska försöka beskriva mitt problem så enkelt som möjligt.

**Problemet**
Jag vill hämta ut dagens vecka utifrån Sälj_datum som är av formatet TIME (YYYY-MM-DD)
Tidigare har vi hämtat ut dagens månad utifrån sälj_datum och det gör vi så här:

SELECT "tables"  
FROM  SALJ
WHERE SALJ_DATUM\>=CAST(TO_DATE(CONCAT('PARAM_2', '01'), 'YYYY-MM-DD') AS DATE ANSI)
AND SALJ_DATUM\<= CAST(LAST_DAY(TO_DATE(CONCAT('PARAM_2', '01'), 'YYYY-MM-DD')) AS DATE ANSI)
GROUP BY "tables"

**Kommentarer kring syntaxen:**
Param2 = YYYY-MM 

Param 2 är fördefinierade värden, d.v.s i detta fall kommer det visas
2008-05 då selecten väljer ut sista månaden.
Användaren har då möjligheten att välja dagens månad eller annan månad utifrån vad han specificerar i Param_2.

**Summa sumarum**
Så jag behöver alltså göra om YYYY-MM-DD till YYYY-WW.

Glömde nämna, jag sitter i Oracle RDB miljö
 
// Peso

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

## #2 — Brimba, 2008-05-11T07:00Z

Kan du använda dig av funktionen ISOWeek?

http://msdn.microsoft.com/en-us/library/aa258261(SQL.80).aspx

```
CREATE FUNCTION ISOweek  (@DATE datetime)
RETURNS int
AS
BEGIN
   DECLARE @ISOweek int
   SET @ISOweek= DATEPART(wk,@DATE)+1
      -DATEPART(wk,CAST(DATEPART(yy,@DATE) as CHAR(4))+'0104')
--Special cases: Jan 1-3 may belong to the previous year
   IF (@ISOweek=0) 
      SET @ISOweek=dbo.ISOweek(CAST(DATEPART(yy,@DATE)-1 
         AS CHAR(4))+'12'+ CAST(24+DATEPART(DAY,@DATE) AS CHAR(2)))+1
--Special case: Dec 29-31 may belong to the next year
   IF ((DATEPART(mm,@DATE)=12) AND 
      ((DATEPART(dd,@DATE)-DATEPART(dw,@DATE))>= 28))
      SET @ISOweek=1
   RETURN(@ISOweek)
END
```

.edit, jag missade din redigering att du satt i oraclemiljö, men jag låter ändå detta tipset vara kvar då det kanske kan hjälpa någon annan som också missar din sista rad. :)

Jag har inga tips om hur du gör i oracle tyvärr.

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

---

Tråden på webben: https://www.webforum.nu/amne/databaser-sql/171321-problem-sql-syntax
