Fetstil Fetstil Kursiv Understrykning linje färgläggning tabellverk Punktlista Nummerlista Vänster Centrerat högerställt Utfyllt Länk Bild htmlmode
  • Forum & Blog
    • Forum - översikt
      • .Net
        • asp.net generellt
        • c#
        • vb.net
        • f#
        • silverlight
        • microsoft surface
        • visual studio .net
      • databaser
        • sql-server
        • databaser
        • access
        • mysql
      • mjukvara klient
        • datorer och komponenter
        • nätverk, lan/wan
        • operativsystem
        • programvaror
        • säkerhet, inställningar
        • windows server
        • allmänt
        • crystal reports
        • exchange/outlook
        • microsoft office
      • mjukvara server
        • active directory
        • biztalk
        • exchange
        • linux
        • sharepoint
        • webbservers
        • sql server
      • appar (win/mobil)
      • programspråk
        • c++
        • delphi
        • java
        • quick basic
        • visual basic
      • scripting
        • asp 3.0
        • flash actionscript
        • html css
        • javascript
        • php
        • regular expresssion
        • xml
      • spel och grafik
        • DirectX
        • Spel och grafik
      • ledning
        • Arkitektur
        • Systemutveckling
        • krav och test
        • projektledning
        • ledningsfrågor
      • vb-sektioner
        • activeX
        • windows api
        • elektronik
        • internet
        • komponenter
        • nätverk
        • operativsystem
      • övriga forum
        • arbete karriär
        • erbjuda uppdrag och tjänster
        • juridiska frågor
        • köp och sälj
        • matematik och fysik
        • intern information
        • skrivklåda
        • webb-operatörer
    • Posta inlägg i forumet
    • Chatta med andra
  • Konto
    • Medlemssida
    • Byta lösenord
    • Bli bonsumedlem
    • iMail
  • Material
    • Tips & tricks
    • Artiklar
    • Programarkiv
  • JOBB
  • Student
    • Studentlicenser
  • KONTAKT
    • Om pellesoft
    • Grundare
    • Kontakta oss
    • Annonsering
    • Partners
    • Felanmälan
  • Logga in

Hem / Forum översikt / inlägg

Posta nytt inlägg


Kontroll av kod

Postades av 2004-08-10 13:42:48 - Mikael Ericsson, i forum sql-server/msde, Tråden har 2 Kommentarer och lästs av 835 personer

Hej!

Vill någon vänlig själ kolla min procedur så att den fungerar i alla lägen?
Har säkert missat något eller så kan den säkert göras effektivare.
Det proceduren ska göra är att kontrollera vilka som fyller år from ett datum och x dagar framåt.
Inparametrar är fromdatum och antal dagar framåt.
T.ex. "Vilka fyller år en vecka framåt?" blir spBirthday 2004-08-10, 7

CREATE PROCEDURE spBirthday @date smalldatetime, @days int
AS

if datepart(yyyy,dateadd(d,@days,@date))<>datepart(yyyy,@date) -- nästa år
begin
select [id],birthdate
from tadrcontact
where
convert(smalldatetime,convert(varchar,datepart(yyyy,dateadd(d,@days,@date)))+'-'+
convert(varchar,datepart(mm,birthdate))+'-'+convert(varchar,datepart(dd,birthdate)))
>=@date
and
convert(smalldatetime,convert(varchar,datepart(yyyy,@date))+'-'+
convert(varchar,datepart(mm,birthdate))+'-'+convert(varchar,datepart(dd,birthdate)))
<=dateadd(d,@days,@date)
end
else -- innevarande år
begin
select [id],birthdate
from tadrcontact
where
convert(smalldatetime,convert(varchar,datepart(yyyy,@date))+'-'+
convert(varchar,datepart(mm,birthdate))+'-'+convert(varchar,datepart(dd,birthdate)))
>=@date
and
convert(smalldatetime,convert(varchar,datepart(yyyy,@date))+'-'+
convert(varchar,datepart(mm,birthdate))+'-'+convert(varchar,datepart(dd,birthdate)))
<=dateadd(d,@days,@date)
end


Svara

Sv: Kontroll av kod

Postades av 2004-08-11 09:14:28 - Patrik Dahlén

Ser onödigt komplicerad ut. Gillar inte när det ligger affärslogik i datalagret, även när det bara handlar om att plussa på några dagar.
Om du kan, ändra i koden och lägg på antal dagar redan där och skicka in två datum, från och till. Då löser du din fråga med.

CREATE PROCEDURE spBirthday
  (
    @fromdate  smalldatetime,
    @todate  smalldatetime 
  )
AS 
    SELECT [id],birthdate 
    FROM tadrcontact 
    WHERE birthdate >= @fromdate 
    AND birthdate <=todate
    ORDER BY birthdate DESC

Förutsätter också att birthdate är av typ smalldatetime. Vill du inte veta namn och annan info på personerna som fyller år? Utöka i så fall SELECT frågan. Eller vad gör du med listan med idnummer du får ut?

I min mening en mycket smidigare lösning som även är lättare att felsöka.


Svara

Sv: Kontroll av kod

Postades av 2004-08-11 10:10:08 - Mikael Ericsson

I ditt expempel får jag ju bara ut vilka som är födda mellan två datum.
Hur menar du att jag ska kunna få reda på vilka som fyller denna vecka?
Vilka datum ska jag skicka som parametrar; 2004-08-09 och 2004-08-15?
Problemet är årtalet, frågan ska returnera alla som fyller mellan 9:e augusti och 15:e augusti oavsett vilket år de är födda.

Tycker också att proceduren vart lite väl komplicerad, mycket på grund av att hänsyn måste tas till årsskiften.

Skalade bort övriga utfält innan postning här.


Svara

Nyligen

  • 14:24 CBD regelbundet?
  • 14:23 CBD regelbundet?
  • 14:22 Har du märkt några verkliga fördel
  • 09:09 Vill du köpa medicinska tester?
  • 12:47 Vem beviljar assistansen – kommune
  • 14:17 Någon med erfarenhet av hemstädnin
  • 14:14 Bör man använda sig av en båtförme
  • 14:12 Finns det någon intressant hundblo

Sidor

  • Hem
  • Bli bonusmedlem
  • Läs artiklar
  • Chatta med andra
  • Sök och erbjud jobb
  • Kontakta oss
  • Studentlicenser
  • Skriv en artikel

Statistik

Antal besökare:
Antal medlemmar:
Antal inlägg:
Online:
På chatten:
4 569 619
27 953
271 709
571
0

Kontakta oss

Frågor runt konsultation, rådgivning, uppdrag, rekrytering, annonsering och övriga ärenden. Ring: 0730-88 22 24 | pelle@pellesoft.se

© 1986-2013 PelleSoft AB. Last Build 4.1.7169.18070 (2019-08-18 10:02:21) 4.0.30319.42000
  • Om
  • Kontakta
  • Regler
  • Cookies