webForumDet fria alternativet

Datumintervall update

9 svar · 540 visningar · startad av devotion

devotionMedlem sedan jan. 20012 711 inlägg
#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

oskarsMedlem sedan nov. 20051 263 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?

devotionMedlem sedan jan. 20012 711 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

doggelitoMedlem sedan juni 20003 100 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
devotionMedlem sedan jan. 20012 711 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

oskarsMedlem sedan nov. 20051 263 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?

devotionMedlem sedan jan. 20012 711 inlägg
#7

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

//Henrik

@ndersMedlem sedan juni 200026 914 inlägg
#8

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

devotionMedlem sedan jan. 20012 711 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

devotionMedlem sedan jan. 20012 711 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

Genererad på 383 ms · cache AV · v20260730165559-full.f96bc7eb