---
title: "Divide by zero error encountered"
type: "forum-thread"
url: "https://www.webforum.nu/amne/databaser-sql/162130-divide-by-zero-error-encountered"
topic: "Databaser & SQL"
topic_url: "https://www.webforum.nu/amne/databaser-sql"
author: "aleborg"
published: "2007-07-02T14:37:59.000Z"
updated: "2007-07-02T15:27:42.000Z"
replies: 6
views: 451
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/162130-divide-by-zero-error-encountered"
---

# Divide by zero error encountered

## #1 — aleborg, 2007-07-02T14:37Z

Jag har plötsligt börjat få ett mystiskt felmeddelande på en SQL-sats som har fungerat länge:

```
			SELECT 
				ID,
				ProductID,
				AccountNamesID,
				UserID,
				ServerID,
				Article,
				[Name],
				Description,
				Period,
				Qty,
				Price,
				Created,
				Ended 
			FROM 
				ServiceItems
			WHERE 
				(Period > 0) 
			AND 
				(UserID = @userid) 
			AND 
				(DATEDIFF(mm, Created, @month) % Period = 0) 
			AND 
				(Ended IS NULL OR Ended > GETDATE())
```

 
Jag har lyckats utesluta felet till följande del:
DATEDIFF(mm, Created, @month) % Period = 0

@month är '2007-08-01', Created är '2005-08-11' och Period är 12 i raden(som jag trots allt får fram men felmeddelandet uppstår ändå!?), jag vet att nästa rad som skulle ha tagits fram har Period=0, men den filtrerar jag bort i SQL-frågan.

Vad är fel?

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

## #2 — aleborg, 2007-07-02T15:06Z

Efter lite tester verkar det som om (DATEDIFF(mm, Created, @month) % Period = 0) kollas före (Period \> 0), har testat med att sätta paranteser på olika sätt men utan resultat :(

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

## #3 — Addeladde, 2007-07-02T15:08Z

Testa:

```
SELECT 
				ID,
				ProductID,
				AccountNamesID,
				UserID,
				ServerID,
				Article,
				[Name],
				Description,
				Period,
				Qty,
				Price,
				Created,
				Ended 
			FROM 
				ServiceItems
			WHERE 
				(DATEDIFF(mm, Created, @month) % Period = 0) 
			AND 
				ID in(SELECT AI.ID FROM ServiceItems AS AI WHERE AI.Period > 0 AND (AI.UserID = @userid) 
AND AI.Ended IS NULL OR AI.Ended > GETDATE())
```

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

## #4 — aleborg, 2007-07-02T15:12Z

Fungerade inte heller tyvärr.

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

## #5 — LarsG, 2007-07-02T15:18Z

```
AND DATEDIFF(mm, Created, @month) % case when Period = 0 then 1 else period end = 0
```

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

## #6 — aleborg, 2007-07-02T15:25Z

Tack LarsG, nu funkar det. Hur kommer det sig att DATEDIFF kollas före Period\>0, borde den inte gå i rätt ordning?

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

## #7 — LarsG, 2007-07-02T15:27Z

Det kan man aldrig veta. Det är inte definierat i vilken ordning olika villkor testas.

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

---

Tråden på webben: https://www.webforum.nu/amne/databaser-sql/162130-divide-by-zero-error-encountered
