1,java时间戳和unix时间戳
java中时间戳以毫秒为单位:System.currentTimeMillis()
mysql中时间戳使用unix时间戳,以秒为单位:SELECT UNIX_TIMESTAMP(NOW());
System.currentTimeMillis():1479185907737
SELECT UNIX_TIMESTAMP(NOW());1479185907
所以实际应用中不能直接用java毫秒的时间戳 直接和 mysql中unix时间戳对比,需先 /1000
2、solr时间 和 当地时间
solr中存储时间:2016-11-15T03:38:19Z ,是世界协调时间,即UTC零时区时间
而北京时间是东八区GMT+8 晚8小时,对应时间为 2016-11-15 11:38:19
那么,我们在solr中使用时间查询时,传入GMT+8时间,是不对的,需要将其转为UTC时间
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'");
sdf.setTimeZone(TimeZone. getTimeZone( "UTC"));
3、时间查询区间
在mysql中使用unix时间查询比时间使用date类型查询效率更高,在查询时间区间上,使用between...and... 比 ...<...>...更让人喜欢,但between...and...是闭区间,包括两端
在solr中查询闭区间:[ ],包含两端
dateTime:['2016-11-15T03:38:19Z' TO '2016-11-16T03:38:19Z']
solr开区间是:{ }
dateTime:{'2016-11-15T03:38:19Z' TO '2016-11-16T03:38:19Z'}