|
| 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
| |
|
|