2015-03-31 131 views
0

在我的表「news」裏面有「date_in」字段存儲日期,當這個格式爲「20150108」時創建了一些新聞;如何僅從今年的mysql數據庫獲取數據

我需要獲得今年的新聞。

select title, text from news where date_in = ? 

我該如何使用php/mysql來做到這一點?

感謝

+0

首先,將列數據類型設置爲「DATE」,然後使用「YEAR()」mysql函數 – Ghost 2015-03-31 11:35:01

+0

date_in字段的數據類型是什麼。 – 2015-03-31 11:35:15

+0

看看[本教程](http://www.w3schools.com/php/php_mysql_connect.asp)。你的問題是相當廣泛的,取決於許多數據庫設置,只有你會有。 – 2015-03-31 11:36:02

回答

1

您可以從給定的格式選擇爲低於上年。

mysql> select year('20150108'); 
+------------------+ 
| year('20150108') | 
+------------------+ 
|    2015 | 
+------------------+ 
1 row in set (0.00 sec) 

所以在查詢您使用子今年篩選出可以

select 
title, 
text 
from news 
where year(date_in) = year(curdate()); 
+0

謝謝,它像一個魅力。 – Anita 2015-03-31 12:14:00

+0

一個問題:如果我只想選擇過去12個月而不是今年的新聞,該怎麼辦?因爲在01.01.2016我什麼也沒有。 – Anita 2015-03-31 13:29:44

+0

您可以將where條件設置爲date_sub(curdate(),interval 12 month)和curdate()之間的where date(date_in) – 2015-03-31 13:39:40

1

它會幫助你Documentation Here

SELECT title, text FROM news WHERE YEAR(date_in) = YEAR(CURDATE()); 
1

它會幫助你

select title, text from news where YEAR(date_in) = YEAR(CURDATE()) 
0

嘗試,如果該date_in列類型爲nvarchar,VARCHAR等:

SELECT title, text 
FROM news 
WHERE date_in = SUBSTRING(date_in, 1, 4) 
1

易於方法是用year()

select title, text 
from news 
where year(date_in) = year(now()); 

更好的方法是避免在當前日期使用函數。假設你已經沒有前途日期:

select title, text 
from news 
where date_in >= makedate(year(now(), 1); 

這個版本更好,因爲查詢可以在date_in採取指數的優勢。

0

首先,$ CurrentYear = date('Y'); //當年即2015年 然後,選擇標題,正文從新聞WHERE date_in LIKE '%$ CurrentYear%'

0

選擇標題,從新聞文本,其中date_in> 20150101

或$查詢=「選擇標題,來自新聞的文本where date_in>'。日期(「Y」)。 '0101';

相關問題