Avatar billede mortency Nybegynder
16. januar 2006 - 12:50 Der er 9 kommentarer

Endre query fra MY sql til MS sql

Hei!

Jeg skulle ha gjort om så dette scriptet fungerer på MS sql. Er det noen som kan hjelpe meg med dette?

//Morten

select Begin_Date
    , End_Date
    , date_format(
      date_add(
      date_add(Begin_Date
          , interval -dayofmonth(Begin_Date)+1 day )       
          , interval i month  )
          , "%Y/%m" )            as YR_MTH
    , to_days(least(
      date_add(
      date_add(Begin_Date
          , interval -dayofmonth(Begin_Date)+1 day )       
          , interval i+1 month  ),           
          date_add(End_Date, interval 1 day) ))
    - to_days(greatest(
      date_add(
      date_add(Begin_Date
          , interval -dayofmonth(Begin_Date)+1 day )       
          , interval i month  ),
          Begin_Date ))          as DAYS
  from integers
inner
  join datatable
    on date_add(
      date_add(Begin_Date
          , interval -dayofmonth(Begin_Date)+1 day )       
          , interval i month)
  between
      date_add(Begin_Date
          , interval -dayofmonth(Begin_Date)+1 day ) 
  and End_Date
group
    by Begin_Date
    , End_Date
    , YR_MTH   
order
    by Begin_Date
    , YR_MTH
Avatar billede dr_chaos Nybegynder
16. januar 2006 - 12:54 #1
du skal starte med at ændre den dateadd.
i MS SQL ser dataadd ud på denne måde:
DATEADD ( datepart , number, date )
Kig evt her
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/tsqlref/ts_da-db_3vtw.asp
Avatar billede dr_chaos Nybegynder
16. januar 2006 - 12:56 #2
du skal også ændre din format_date til
ved hjælp af convert som du kan se her:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/tsqlref/ts_ca-co_2f3o.asp
Avatar billede ldanielsen Nybegynder
16. januar 2006 - 14:40 #3
Hvis du nu tager disse datofunktions ting en ad gangen og forklarer mig hvad det er de skal gøre, så kan jeg lave dem i T-SQL (dvs. MSSQL sprog)

FX:
date_add(Begin_Date, interval -dayofmonth(Begin_Date)+1 day), interval i month), "%Y/%m" )

Den tager Begin_Date og gør det at den ... Ja, hvad er det den gør?
Avatar billede mortency Nybegynder
16. januar 2006 - 16:30 #4
Hei Idanielsen!

Du kan se artikelen her http://searchoracle.techtarget.com/ateQuestionNResponse/0,289625,sid41_cid632180_tax301455,00.html

De datene jeg skal ha ut er bid, regnr, aktiv,Anavn(tblAvdeling) gjelderfra og SioppforsikringFra
Se tabell her http://www.cyren.no/diagram3.gif

Per i dag benytter jeg en sp --> se http://www.cyren.no/sp_aktive.txt

Output kan sees her http://www.cyren.no/ODS/

Jeg har problemer med at enkelte biler blir feil, eks se regnr DK63187.
(Siden denne bilen gjelderFra 25.07.2003 og SiOppforsikringFra er 31.01.2005 så skulle antalldager være 31 og ikke 1)

181  DK63187  1  1  25.07.2003  31.01.2005  NEI  January 2005

Jeg kan godt betale deg penger for at jeg skal komme i mål med denne queryen. Hvis du ikke ser en enkel og rask løsning. Jeg kan nåes på web@cyren.no

Takk skal du ha.

//Morten
Avatar billede mortency Nybegynder
16. januar 2006 - 16:39 #5
Hei Idanielsen!

Hvis du har nytte av database tilgang så kan du godt få den av meg. Har satt opp en test db. I såfall mailer jeg den til deg.

//Morten
Avatar billede ldanielsen Nybegynder
17. januar 2006 - 09:12 #6
Jeg har ikke tid til at sætte mig ind i det, men jeg kan vise dig de tre funktoner der bruges til datoer i MSSQL:


DATEADD(datepart, number, date)
Den lægger et interval til en dato, fx SELECT DATEADD(m, 6, GETDATE()), der lægger 6 måneder til dags dato, så den returnerer i dag 17-07-2006


DATEPART (datepart , date)
Returnerer en del af en dato som et tal. SELECT DATEPART(d, GETDATE()), der returnerer 17 i dag.


Hvis du skal have forskellen i dage mellem to datoer, er det blot
DATEDIFF(d, dtmDato1, dtmDato2)


datepart kan i alle tilfælde være:

Datepart: Abbreviations
year: yy, yyyy
quarter: qq, q
month: mm, m
dayofyear: dy, y
day: dd, d
week: wk, ww
weekday: dw
hour: hh
minute: mi, n
second: ss, s
millisecond: ms



fx d, m og yyyy
Avatar billede mortency Nybegynder
22. maj 2007 - 14:34 #7
Post et svar så lukker jeg spm.
Avatar billede dr_chaos Nybegynder
23. maj 2007 - 16:00 #8
hvem ?
Avatar billede mortency Nybegynder
08. september 2008 - 23:29 #9
begge... så lukker jeg spm.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester