2011-07-13 11 views
20

Mam więc tabelę z podziałem na miesiąc i rok, na przykład pole o nazwie Miesiąc zawiera numer 7 (w tym miesiącu), a pole Rok ma rok 2011. Tam też są dodatkowe miesiące roku itp. Jak mogę zapytać o to, aby pokazać tylko bieżący rok, miesiąc?SQL Bieżący miesiąc/rok pytanie

+4

Jakiego rodzaju jest to baza danych? –

+4

@Abe Miessler: Oznaczam jako SQL Server, ponieważ wszystkie poprzednie pytania OP używają składni SQL Server lub akceptują odpowiedzi, które robią. I PO deklaruje cel na rok 2005+ w komentarzach: http://stackoverflow.com/questions/5478386/subtracting-datetime-in-sql-query –

Odpowiedz

29

W SQL Server można użyć YEAR, MONTH i DAY zamiast DATEPART.
(przynajmniej w SQL Server 2005/2008, nie jestem pewien o SQL Server 2000 i starsze)

I wolą używać tych „krótkich form”, bo dla mnie YEAR(getdate()) jest krótszy wpisywać i lepiej przeczytać niż DATEPART(yyyy, getdate()).

Więc można również kwerendy tabelę tak:

select * 
from your_table 
where month_column = MONTH(getdate()) 
and year_column = YEAR(getdate()) 
10

ten powinien pracować dla SQL Server:

SELECT * FROM myTable 
WHERE month = DATEPART(m, GETDATE()) AND 
year = DATEPART(yyyy, GETDATE()) 
1

Jak o:

Select * 
from some_table st 
where st.month = to_char(sysdate,'MM') and 
    st.year = to_char(sysdate,'YYYY'); 

powinno działać w Oracle. Jakiej bazy danych używasz? Pytam, ponieważ nie wszystkie bazy danych mają te same funkcje daty.

5

To powinno działać w MySQL

SELECT * FROM 'my_table' WHERE 'month' = MONTH(CURRENT_TIMESTAMP) AND 'year' = YEAR(CURRENT_TIMESTAMP); 
+4

Powinieneś wspomnieć, która baza danych jest dla –

+0

Twoja wersja jest taka sama jak moja? Dlaczego muszę wspomnieć o db? : s –

+2

Czy to działa na Oracle, DB2, MySQL, PostgreSQL, SQLite, Paradox, MS-SQL Server? Dowolny z nich? Wszystkie te? Żaden z tych? Niektóre z tych? – FrustratedWithFormsDesigner

-3

select * z your_table gdzie MIESIĄC (mont_year) = miesiąc (NOW()) i rok (mont_year) = rok (obecnie());

Uwaga: (month_year) oznacza kolumnę, która zawiera format daty. Myślę, że rozwiąże to twój problem. Daj mi znać, jeśli to zapytanie nie działa.

+1

Nie dodałeś nic do zaakceptowanych odpowiedzi sprzed 3 lat, a twoja odpowiedź nie dotyczy schematu w OP. – sasfrog