webForumDet fria alternativet

Datumintervall update

Databaser & SQL

9 svar · 540 visningar · startad av devotion

Medlem sedan jan. 20013 582 inlägg
Frågan#1

Hej!

Kan man i SQL, göra ett villkor, som gör en UPDATE på föregående dygns poster.

Säg att jag kör UPDATE kl 02:00 2009-02-10. Detta skall sedan ske periodiskt varje natt kl 02:00.

Jag vill då att poster som har StartDate som ligger mellan 2009-02-09 00:00:00 och 2009-02-09 23:59:59 skall uppdateras.

Kan man göra så?

Mvh
Henrik

Medlem sedan nov. 20051 317 inlägg
#2

Om du kör ASP skulle jag gjort så här:


' Dagen som ska uppdateras får vi fram så här:
myDate = dateserial(Year(Date),Month(Date),Day(Date)-1)

Sen i SELECT-satsen får ju göra något sånt här:


UPDATE Namn = "&mittNyaNamn&" WHERE Datum >= '"&myDate&"' AND Datum < '"&Date&"'

Typ så... om jag fattar dig rätt?

Medlem sedan jan. 20013 582 inlägg
#3

oskars skrev:

Om du kör ASP skulle jag gjort så här:


' Dagen som ska uppdateras får vi fram så här:
myDate = dateserial(Year(Date),Month(Date),Day(Date)-1)

Sen i SELECT-satsen får ju göra något sånt här:


UPDATE Namn = "&mittNyaNamn&" WHERE Datum >= '"&myDate&"' AND Datum < '"&Date&"'

Typ så... om jag fattar dig rätt?

Jo, det är ju ett sätt, men går det inte att lösa direkt i en SQL-fråga? :)

Mvh
Henrik

Medlem sedan juni 20003 076 inlägg
#4

Typ så här:

UPDATE t
SET [KOLUMN] = '1234'
FROM [TABLE] t
WHERE DATEDIFF(d, t.[STARTDATE], DATEADD(d, -1, getDate())) = 0
Medlem sedan jan. 20013 582 inlägg
#5

doggelito skrev:

Typ så här:

UPDATE t
SET [KOLUMN] = '1234'
FROM [TABLE] t
WHERE DATEDIFF(d, t.[STARTDATE], DATEADD(d, -1, getDate())) = 0

Ska titta på det!

:)

Mvh
Henrik

Medlem sedan nov. 20051 317 inlägg
#6

Hur har du tänkt att göra för att det ska uppdateras 02:00 varje natt? Schemaläggning i XP?

Medlem sedan jan. 20013 582 inlägg
#7

Det kan vara en tänkbar lösning :)

//Henrik

Medlem sedan juni 200032 967 inlägg
#8

Om man använder SQL Server finns ju bra schemaläggningsalternativ där.

Medlem sedan jan. 20013 582 inlägg
#9

Jepp, jag vet. Men om man kör SQL-express, så får man förlita sig på schemaläggaren.

:)

Mvh
Henrik

Medlem sedan jan. 20013 582 inlägg
#10

Eller så här:

UPDATE tblTask
  SET CustomT2 = c.[Category], Modified = GETDATE()
  FROM tblTask t
INNER
  JOIN tblCustomer c
    ON t.[CustomerNr] = c.[Nr]
WHERE DATEDIFF(d, t.planstartdate, GETDATE()) = 1

Mvh
Henrik

263 ms totalt · 4 externa anrop · v20260731065814-full.6fe65c25
127 ms — deklarationer (db)
0 ms — hämta statistik (cache)
130 ms — hämta tråd, inlägg och bilagor (db)
130 ms — ändringar (db)