2009-10-20 10 views
8

La tabella dei contenuti è simile a (contentID, title, created). Ho bisogno di ottenere tutto il contenuto che è stato creato più di 3 settimane fa.query sql per ottenere contenuto più vecchio di 3 settimane

Il database del server Sql, creato è di tipo datetime.

+0

Che formato è 'created' in? –

+0

Sarebbe utile se si menzionasse il database. Non sono sicuro che esista un modo ANSI per farlo. – Petros

+0

creato è di tipo datetime, sql server db. – mrblah

risposta

33

ne dite:

select contentID, title, created 
from content 
where created < dateadd(week,-3,getdate()); 

Questo attacca più vicino alla domanda. 21 giorni vanno bene, ovviamente significa lo stesso, ma trovo che sia bene usare la terminologia usata nella domanda.

Ad esempio ... un po 'di tempo indietro mi è stato chiesto di controllare una media di 1 su 50 visitatori di un sito. Ho descritto questo come una proporzione di 0,02, e il cliente non era felice. Ho fatto notare al cliente che sono uguali, ma ho imparato la lezione, e ora se cambio il modo in cui qualcosa è descritto, mi assicuro di commentare in tal senso, e preferibilmente non lo cambio nel primo posto. Se il cliente desidera 3 settimane, farlo come 3 settimane, non 21 giorni.

+0

+1 Buon argomento –

+0

+1, sì, buon punto –

+0

+1 E quando vogliono cambiarlo in 4 settimane, non vogliono fare i conti (suppongo che sia per questo che abbiamo computer e programmatori.). – JeffO

3

in MS SQL 2000/2005 si può fare questo

Select 
    contactID, 
    title, 
    created 
from 
    content 
where 
    created < getdate()-21 
+0

Dovresti cercare di evitare la matematica implicita "dateadd (day)". Perché? I nuovi tipi di dati DATE in SQL Server 2008 non apprezzeranno gli operatori + o - (ci sarà un errore di tipo type). Ho usato GETDATE() + - INT per un lungo periodo e sto cercando di rompere l'abitudine da solo. –

0

Prova questo:

select contentID, title, created from content 
where created < dateadd(day,-21,getdate()) 
+0

Come posso utilizzare questo metodo per la mia domanda qui: http://stackoverflow.com/questions/26021347/how-to-get-two-week-prior-data-from-a-table – SearchForKnowledge