|  | 		    
					
        
         
          
         
	
          | |  | mssql ugenr til dato Fra : Leif Neland
 | 
 Dato :  07-04-10 11:58
 | 
 |  | I mysql kan man konvertere ugenr til dato ved at specificere en ugedag i
 ugen:
 mysql> SELECT STR_TO_DATE('200442 Monday', '%X%V %W');
 -> '2004-10-18'
 Er der en tilsvarende metode i Tsql (SQL server v. 8.00.2047)Eller skal det
 laves i php (5.2) ? Jeg laver alligevel datakonvertering fra tekst til sql i
 php.Jeg har inddata i formatet "KW 20 / 2010", men det kan php jo
 manipulere.Leif
 
 
 
 
 |  |  | 
  Arne Vajhøj (08-04-2010) 
 
	
          | |  | Kommentar Fra : Arne Vajhøj
 | 
 Dato :  08-04-10 03:24
 | 
 |  | On 07-04-2010 06:58, Leif Neland wrote:
 > I mysql kan man konvertere ugenr til dato ved at specificere en ugedag i
 > ugen:
 > mysql>  SELECT STR_TO_DATE('200442 Monday', '%X%V %W');
 >          ->  '2004-10-18'
 > Er der en tilsvarende metode i Tsql (SQL server v. 8.00.2047)Eller skal det
 > laves i php (5.2) ? Jeg laver alligevel datakonvertering fra tekst til sql i
 > php.Jeg har inddata i formatet "KW 20 / 2010", men det kan php jo
 > manipulere.
 
 Jeg tror at det bliver PHP.
 
 Hverken CONVERT eller DATEADD ser lovende ud.
 
 Hvis du var på 2005/2008 var det nemt at lave en userdefined
 function i C#/VB.NET.
 
 Man kan også lave en UDF i TSQL, men det bliver ikke kønt.
 
 Her er et udkast med amerikansk ugenummer:
 
 CREATE FUNCTION udf_find_week(@y INTEGER, @w INTEGER, @wd INTEGER)
 RETURNS DATETIME AS
 BEGIN
 DECLARE @t DATETIME
 SET @t = CONVERT(DATETIME,CONVERT(VARCHAR,@y)+'0101')
 WHILE DATEPART(WK,@t) < @w
 BEGIN
 SET @t = DATEADD(d,1,@t)
 END
 WHILE DATEPART(DW,@t) < @wd
 BEGIN
 SET @t = DATEADD(d,1,@t)
 END
 RETURN @t
 END
 GO
 
 Det bliver endnu værre med europæisk/ISO ugenummer.
 
 Arne
 
 
 
 |  |  | 
  Leif Neland (08-04-2010) 
 
	
          | |  | Kommentar Fra : Leif Neland
 | 
 Dato :  08-04-10 08:12
 | 
 |  | Arne Vajhøj wrote:
 > On 07-04-2010 06:58, Leif Neland wrote:
 >> I mysql kan man konvertere ugenr til dato ved at specificere en
 >> ugedag i ugen:
 >> mysql>  SELECT STR_TO_DATE('200442 Monday', '%X%V %W');
 >>          ->  '2004-10-18'
 >> Er der en tilsvarende metode i Tsql (SQL server v. 8.00.2047)Eller
 >> skal det laves i php (5.2) ? Jeg laver alligevel datakonvertering
 >> fra tekst til sql i php.Jeg har inddata i formatet "KW 20 / 2010",
 >> men det kan php jo manipulere.
 >
 > Jeg tror at det bliver PHP.
 >
 > Hverken CONVERT eller DATEADD ser lovende ud.
 
 Jeg endte med i første omgang at lave et ugly hack (tm), med
 år."-01-01"+7*(ugenr-1)
 Det er alligevel forventet leveringstid, der er et overslag.
 
 Leif
 
 
 
 
 
 |  |  | 
   Stig Johansen (08-04-2010) 
 
	
          | |  | Kommentar Fra : Stig Johansen
 | 
 Dato :  08-04-10 13:48
 | 
 |  | Leif Neland wrote:
 
 > Jeg endte med i første omgang at lave et ugly hack (tm), med
 > år."-01-01"+7*(ugenr-1)
 > Det er alligevel forventet leveringstid, der er et overslag.
 
 Kommer til at tænke på et projekt jeg lavede engang.
 Det var netop baseret på ugenumre, og ETA var fredag i samme uge.
 
 MEN dengang (20+ år siden) var jeg ikke opmærksom på hvornår det var uge 1
 eller uge 53 - gav lidt sjov for dem og deres kunder ;)
 
 Det var dog egen beregning da der ikke var voldsomt mange beregninger
 indbygget i DB'erne.
 
 --
 Med venlig hilsen
 Stig Johansen
 
 
 |  |  | 
 |  |