簡體   English   中英

日期搜索Sql查詢

[英]Date search Sql Query

我將時間戳存儲在(INT)列中的mysql數據庫中,並且我想搜索日期之間的行。 任何人都將幫助Sql查詢來查找兩個日期之間的行嗎?

輸入的日期如下

FROM DATE = 15-10-2011    

END DATE = 01-11-2011

這取決於您使用哪種算法將日期字符串轉換為int值。

例如,如果算法是運動的:如果將一天(例如15-10-2011 )轉換為n (例如5037 ),則第二天( 16-10-2011 )始終轉換為n+1 (所以5038在這個例子中。)

那么您可以使用:

WHERE IntField BETWEEN MySpecialConvertDateToIntFunction('15-10-2011') 
                   AND MySpecialConvertDateToIntFunction('01-11-2011') 

如果您的字段將不同的timsetamps存儲為不同的整數(並且轉換是單調的),則可以將上面的代碼稍微更改為:

WHERE IntField >= MySpecial...Function('15-10-2011') 
  AND IntField < MySpecial...Function('02-11-2011')    --- notice the date+1  

但是通常最好使用MySQL DATE類型的字段來存儲日期。 除非您要存儲日期在課程結束前1000或之后9999

如果要存儲時間戳,則還有TIMESTAMP類型。 閱讀
MySQL文檔:DATETIME,DATE和TIMESTAMP類型

您可以使用BETWEEN運算符,該運算符在兩個值之間選擇一個數據范圍。 值可以是數字,文本或日期。

您可以在此處看到:
http://w3schools.com/sql/sql_between.asp

我會要求您將數據類型設置為timestamp / datestamp,然后

//php code
$date1=date ('Y-m-d' , strtotime ( "15-10-2011") );
$date2=date ('Y-m-d' , strtotime ( "01-11-2011") );
//sql code
SELECT * FROM tbl_mytbl WHERE DATE(attr_date) <'$date2' AND DATE(attr_date) >'$date1'

能否使用mysql FROM_UNIXTIME 函數dev.mysql.com-函數from_unixtime

SELECT * 
FROM 'table' 
WHERE FROM_UNIXTIME(intTimestamp) 
BETWEEN 
date ('Y-m-d' , strtotime ( '15-10-2011') ) 
AND ('Y-m-d' , strtotime ( '01-11-2011'));

我在輸入日期時犯了一個錯誤,但已解決。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM