Selectați toate în cazul în care data în ultima lună sql [duplicat] (Programare, Sql, Server Sql, Tsql)

user3190075 a intrebat.

Cum pot obține data ultimei luni ca

select * from table where date in ( last month  )

Nu vreau ultimele 30 de zile ȘI cum pot obține ultima lună în mod automat

Comentarii

  • atât de multe răspunsuri proaste aici, în prezent nu există răspunsuri utile, verificați linkul și nu utilizați răspunsul selectat din link. –  > Por t-clausen.dk.
5 răspunsuri
M.Ali

Editează

dacă vă referiți la ultima lună de astăzi. sau luna precedentă de la o anumită dată, atunci trebuie să faceți ceva de genul acesta

SELECT DATEPART(MONTH, DATEADD(MONTH, -1, [Date]))

Sau pentru a obține înregistrări din luna anterioară a anului puteți face ceva de genul acesta

SELECT * FROM Table
WHERE  MONTH(Date) =  DATEPART(MONTH, DATEADD(MONTH, -1, [Date]))
AND YEAR(Date) =    DATEPART(YEAR, DATEADD(MONTH, -1, [Date]))    --<-- or pass year for which year you are checking 

Pentru a face ca acvariul dvs. să fie SARGabil (sugerat de t-clausen.dk)

select * from table 
where date >=dateadd(m, datediff(m, 0, current_timestamp)-1, 0) 
and date < dateadd(m, datediff(m, 0, current_timestamp)-1, 0)

Citiți aici mai multe informații despre interogările SARGable atunci când lucrați cu tipuri de date/datetime.

Comentarii

  • Cum pot obține automat ultima lună –  > Por user3190075.
  • @user3190075 MONTH(GETDATE())) –  > Por cubitouch.
  • ultima lună din ce ???? @user3190075 –  > Por M.Ali.
  • @M.Ali ajungi acolo. Dar trebuie să includeți anul în interogare, altfel rezultatul va include înregistrări din anii anteriori. –  > Por Klaus Byskov Pedersen.
  • Iată cum ar fi trebuit să o rezolvați pentru a permite utilizarea indexului: select * from table where date >=dateadd(m, datediff(m, 0, current_timestamp)-1, 0) and date < dateadd(m, datediff(m, 0, current_timestamp)-1, 0) – -.  > Por t-clausen.dk.
Trinity

Puteți utiliza această

Select * from table where date between @startdate and @enddate

Sau

SELECT * FROM DATE_SAMPLE WHERE 
DATEPART(YEAR, SAMPLE_DATE) = '2013' AND 
DATEPART(MONTH,SAMPLE_DATE) = '01' AND 
DATEPART(DAY, SAMPLE_DATE) = '01'

Este util pentru dumneavoastră?

Obsidian Phoenix

Presupunând că doriți ca toate elementele în care data este în ultima lună adică între astăzi și acum 30/31 de zile:

Select *
From Table
Where Date Between DATEADD(m, -1, GETDATE()) and GETDATE()

Cav
select * from table
where month(date)=month(getdate())-1

Comentarii

  • Asta returnează 0 (zero) pentru această lună! –  > Por Klaus Byskov Pedersen.
XcisioN

Puteți încerca să utilizați declarația between pentru a obține datele specifice:

Select * from table where date between '01-01-2014' and '14-01-2014'