2009-10-20 6 views
8

Mon tableau de contenu ressemble (contentID, titre, créé). J'ai besoin de tout le contenu créé il y a plus de trois semaines.requête SQL pour obtenir le contenu plus de 3 semaines

La base de données du serveur SQL, créée est le type datetime.

+0

Quel est le format 'created' en? –

+0

Il serait utile si vous avez mentionné la base de données. Je ne suis pas sûr qu'il existe une façon ANSI de le faire. – Petros

+0

créé est de type datetime, sql server db. – mrblah

Répondre

33

Que diriez-vous:

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

Cette colle plus à la question. 21 jours c'est bien, signifie évidemment la même chose, mais je trouve qu'il est bon d'utiliser la terminologie utilisée dans la question. Par exemple ... il y a quelque temps, on m'a demandé d'interroger en moyenne un visiteur sur un site sur 50. J'ai décrit cela comme une proportion de 0,02, et le client n'était pas content. J'ai fait remarquer au client qu'ils sont pareils, mais j'ai appris ma leçon, et maintenant, si je change la façon dont quelque chose est décrit, je m'assure que je commente à cet effet, et de préférence ne le change pas dans le premier endroit. Si le client veut 3 semaines, faites-le comme 3 semaines, pas 21 jours.

+0

+1 Bon argument –

+0

+1, ouais, bon point –

+0

+1 Et quand ils veulent le changer à 4 semaines, ils ne veulent pas faire le calcul (je suppose que c'est pourquoi nous avons des ordinateurs et des programmeurs.). – JeffO

3

dans MS SQL 2000/2005 vous pouvez le faire

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

Vous devriez essayer de rester à l'écart des mathématiques implicites "dateadd (day)". Pourquoi? Les nouveaux types de données DATE dans SQL Server 2008 n'aimeront pas les opérateurs + ou - (il y aura une erreur de collision de type). J'ai utilisé GETDATE() + - INT pendant longtemps et je suis en train de triturer pour casser l'habitude moi-même. –

0

Essayez ceci:

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

Comment puis-je utiliser cette méthode pour ma question ici: http://stackoverflow.com/questions/26021347/how-to-get-two-week-prior-data-from-a-table – SearchForKnowledge

Questions connexes