Comment puis-je déterminer le dernier jour du mois précédent, l'utilisation de PostgreSQL?
J'ai besoin d'interroger une base de données PostgreSQL à déterminer les enregistrements qui relèvent de la date du jour et le dernier jour du mois précédent. En d'autres termes, je voudrais récupérer tout ce qui se trouve entre le 31 décembre 2011 et aujourd'hui. Cette requête sera ré-utilisée chaque mois, pour le mois prochain, la requête sera basée sur la date et le 31 janvier 2012.
J'ai vu cette option, mais je préfère éviter d'utiliser une fonction (si possible).
Pourquoi voulez-vous éviter une fonction?
Je vous conseille d'utiliser une fonction, de sorte que vous avez un point de mise à jour si des modifications sont nécessaires, cependant, si vous voulez l'éviter, il suffit de remplacer $1 avec champ de date
Alors, voulez-vous de include le dernier jour du dernier mois?
Oui, c'est bien.
Je vous conseille d'utiliser une fonction, de sorte que vous avez un point de mise à jour si des modifications sont nécessaires, cependant, si vous voulez l'éviter, il suffit de remplacer $1 avec champ de date
Alors, voulez-vous de include le dernier jour du dernier mois?
Oui, c'est bien.
OriginalL'auteur Huuuze | 2012-01-20
Vous devez vous connecter pour publier un commentaire.
Deux solutions inclure le dernier jour du mois précédent et aussi inclure tous "aujourd'hui".
Pour un
date
colonne:Vous pouvez soustraire de la plaine des valeurs entières à partir d'un
date
(mais pas à partir d'untimestamp
) pour soustraire jours. C'est le plus simple et le plus rapide.Pour un
timestamp
colonne:Noter que j'utilise le
<
opérateur pour la deuxième condition pour obtenir des résultats précis (~ "avant demain").Je n'ai pas jeté à l'
date
dans la deuxième requête. Au lieu de cela j'ai ajouter uninterval '1 day'
, pour éviter de jeter en arrière et en avant.Ont un coup d'oeil à les types date /heure et fonctions dans le manuel.
devrait être corrigé maintenant.
Je pense que nous nous rapprochons. Cela semble être au travail, mais à l'exclusion des valeurs à la date d'aujourd'hui.
Essayé ce pour la 2ème partie de la ENTRE et il a travaillé: date_trunc('JOUR', now())::date+1. Ne vous sentez pas bien, mais il fonctionne. Des Suggestions?
now() - interval '1 mois')::date
OriginalL'auteur Erwin Brandstetter
Pour arriver date de précédent/le mois dernier:
Résultat: 2012-11-30
Pour arriver nombre de jours de précédent/le mois dernier:
Résultat: 30
OriginalL'auteur Saad
Essayez ceci:
'-1 day'::interval
pour l'OP de la condition réelleComme vous l'avez remarqué, la requête ci-dessus ne fonctionne pas. Comment puis-je intégrer votre suggestion dans la suggestion de requête?
J'ai un record qui tombe entre les 31 décembre 2011 et aujourd'hui, mais votre requête n'a pas de retour. Si je supprime votre suggestion de la part de ma requête et de le remplacer par "2011-12-31", le résultat attendu se produit.
Essayez la formule modifiée.
Je dois être en train de faire quelque chose de mal. Voici mon/votre clause where: my_date >= (date_trunc ("MOIS", my_date) - INTERVAL '1 jour')::date et my_date <= now(). Cela renvoie des résultats qui sont datées du 20 décembre. Pensées?
OriginalL'auteur
Essayer
OriginalL'auteur theglauber
prendre de http://wiki.postgresql.org/wiki/Date_LastDay, et modifié pour revenir simplement les jours dans un mois
retourne 31
OriginalL'auteur user2601381
De référence est prise à partir de ce blog:
Vous pouvez utiliser en dessous de la fonction:
Échantillon exécutions:
OriginalL'auteur Anvesh