/ Forside / Teknologi / Udvikling / SQL / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
SQL
#NavnPoint
pmbruun 1704
niller 962
fehaar 730
Interkril.. 701
ellebye 510
pawel 510
rpje 405
pete 350
gibson 320
10  smorch 260
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

Søg
Reklame
Statistik
Spørgsmål : 177558
Tips : 31968
Nyheder : 719565
Indlæg : 6408914
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste