senza - Seleziona il primo giorno del mese precedente in(DB2) SQL




time sql (4)

Devo controllare se una determinata data è nel mese precedente per una query mensile. posso ottenere

CURRENT DATE - 1 MONTH

per confrontare la data selezionata con, ma non posso presumere che la data corrente sarà esattamente il primo giorno di ogni mese. Esiste un modo integrato per ottenere il primo giorno del mese senza estrarre l'anno e il mese e incollarlo di nuovo insieme?

https://code.i-harness.com


Credo che quanto segue funzionerà per te.

ROUND_TIMESTAMP (somedate,'W')

Per approfondire questo con più informazioni. La soluzione sopra è perfetta se vuoi il primo giorno del mese, dici di volere l'ultimo giorno del mese, o nel mio caso voglio l'ultimo giorno del trimestre successivo.

Dall'alto stavo facendo

date('0001-01-31') + year(date(prevQdate))years - 1 year + month(prevQdate) months + 2 months)

Che non mi stava dando quello che volevo, a volte la data era il 30 anziché il 31 per mesi con 31 giorni ...

Cambiandolo a

date('0001-01-31') + year(date(prevQdate))years - 1 year + **(month(prevQdate) + 2)** months)

Mi ha dato quello che volevo. Sembra che la prima aggiunta dei Mesi dalla data del trimestre precedente sia stata la reimpostazione della parte GIORNO della mia data e quindi la seconda aggiunta di mesi stava lavorando ad una data con solo 30 giorni nel mese.

Solo qualcosa di cui diffidare quando si utilizza questo metodo di manipolazione della data in DB2.


Metodi LUW 9.7 (e penso z / os) che utilizzano funzioni integrate.

Ultimo giorno del mese corrente:

LAST_DAY(CURRENT DATE)

Primo giorno del mese precedente:

LAST_DAY(CURRENT DATE - 2 MONTHS) + 1 DAY or (LUW) TRUNCATE(CURRENT DATE - 1 month, 'MONTH')

Primo giorno del mese corrente:

LAST_DAY(CURRENT DATE - 1 MONTH) + 1 DAY or (LUW) TRUNCATE(CURRENT DATE, 'MONTH');  

Primo giorno del mese in corso:

CURRENT_DATE - (DAY(CURRENT_DATE)-1) DAYS 

Il primo dell'anno corrente è

CURRENT_DATE - (DAY(CURRENT_DATE)-1) DAYS - (MONTH(CURRENT_DATE)-1) MONTHS 

L'ultimo giorno del mese scorso:

CURRENT_DATE - DAY(CURRENT_DATE) DAYS 

Primo giorno del mese scorso:

CURRENT_DATE - (DAY(CURRENT_DATE)-1) DAYS - 1 MONTH 






db2