У меня есть 50000 XML-записей, подобных этой в базе данных:
<?xml version="1.0" encoding="UTF-8"?>
<root>
<urlMD5>11ca7070ad6eb3180c53281e7b597976</urlMD5>
<date>
<year>2011</year>
<month>8</month>
<day>6</day>
<h>19</h>
<m>26</m>
<s>40</s>
</date>
<enc>utf-8</enc>
</root>
, как вы видите, я сохранил дату в формате с разделением .Теперь мне нужно извлечь currentTimeMillis () этих дней и сохранить в базу данных в новом поле.Поэтому я могу легко сравнить их с текущим currentTimeMillis () и выяснить, какие документы были сохранены за последние два дня.например:
int ct = currentTimeMillis();
Class.forName("com.mysql.jdbc.Driver");
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost/crawler?" + "user=root&password=&useUnicode=true&characterEncoding=UTF-8");
Statement stat = conn.createStatement();
ResultSet rs = st.executeQuery("SELECT * FROM DBName WHERE ct - 60 * 60 * 24 * 2 > timeField");
И поскольку я хочу использовать это поле много раз, я хочу использовать простой запрос и не хочу каждый раз извлекать формат XML.
Проблема в том, что функция currentTimeMillis () вычисляет currentTimeMillis, который прошел с 1 января 1970 года, и мне нужно вычислить то же самое с моими данными.Я написал следующий код с тем же кодом, который использовал ранее для хранения данных XML, чтобы убедиться, что я могу это сделать или нет:
int s = 0;
s += (Calendar.getInstance().get(Calendar.YEAR) - 1970) * 60 * 60 * 24 * 365;
s += (Calendar.getInstance().get(Calendar.MONTH)) * 60 * 60 * 24 * 31;
s += (Calendar.getInstance().get(Calendar.DAY_OF_MONTH) * 60 * 60 * 24);
s += (Calendar.getInstance().get(Calendar.HOUR_OF_DAY) * 60 * 60);
s += (Calendar.getInstance().get(Calendar.MINUTE) * 60);
s += (Calendar.getInstance().get(Calendar.SECOND));
System.out.println(s);
System.out.println(System.currentTimeMillis() / 1000);
, но результаты не совпадают:
1312313680
1312643080
Одна из причин в том, что не каждый месяц имеет 31 день.
В любом случае, мне нужна помощь, чтобы узнать, как я могу рассчитать currentTimeMillis с особой датой, а не с текущей датой?
Следует отметить, что я использую mysql, поэтому, возможно, я смогу сохранить даты в специальном формате, который можно сравнить с запросом SQL?