2017-06-08 6 views
0

Je dois afficher les dernières ET dernières périodes de paie basées sur un tableau importé pour les dates de paye bihebdomadaires. Le tableau ressemble à ceci:Affichage de la période de paie actuelle et précédente dans SQL (basée sur une table importée)

2017-03-23 00:00:00 2017-04-06 00:00:00 
2017-04-07 00:00:00 2017-04-20 00:00:00 
2017-04-21 00:00:00 2017-05-06 00:00:00 
2017-05-07 00:00:00 2017-05-20 00:00:00 
2017-05-21 00:00:00 2017-06-05 00:00:00 
2017-06-06 00:00:00 2017-06-22 00:00:00 
2017-06-23 00:00:00 2017-07-06 00:00:00 
2017-07-07 00:00:00 2017-07-21 00:00:00 

Ce code:

 SELECT * 
    FROM 
     table1 
    WHERE 
     (start_date <= now() AND end_date >= now()) 

Affiche:

2017-06-06 00:00:00 2017-06-22 00:00:00 

Comment puis-je afficher la période de paie précédente? Tels que:

2017-05-21 00:00:00 2017-06-05 00:00:00 

Ce code ne vient même pas l'air bien, mais je l'ai essayé de toute façon:

SELECT start_date, 
CASE 
    WHEN start_date = now() THEN start_date = now() - 1 
    WHEN end_date = now() THEN start_date = now() - 1 
END 
FROM table1; 

Je sais qu'il ya un moyen d'utiliser CASE WHEN mais pour une raison quelconque, je ne peut pas obtenir la bonne syntaxe en utilisant now() puisque je veux que ce soit dynamique et non une date statique.

+0

Quelle base de données SQL? – maSTAShuFu

+0

@maSTAShuFu pourriez-vous élaborer? – codemonkey

+0

si personne ne vous donnera une réponse je peux probablement écrire mais plus tard – maSTAShuFu

Répondre

0
SELECT concat(start_date,' ', 
CASE 
    WHEN start_date = now() THEN start_date = now() - INTERVAL 1 DAY 
WHEN end_date = now() THEN start_date = now() - INTERVAL 1 DAY 
END) AS PeriodOfPay 
FROM table1; 
+0

Votre code montre tout dans le tableau (même que le mien, ci-dessus). J'ai besoin de la dernière période de paie pour être affichée. 2017-05-21 00:00:00 2017-06-05 00:00:00 – codemonkey

+0

J'ai modifié la réponse en fonction de ma compréhension de votre question. –

0

essayer cette

Pour la période de paie actuelle et précédente

SELECT start_date, 
end_date 
FROM table1 
where start_date < now() 
ORDER BY start_date desc 
LIMIT 2;