сравнить дату в инструкции sql

#javascript #sql #web-sql #date-comparison

#javascript #sql #web-sql #дата-сравнение

Вопрос:

Я создаю инструмент оповещения с использованием веб-sql.

Я хочу выбрать все события, которые происходят в определенный день. когда я вставляю событие, я вставляю дату как объект date с таким форматом «2011-10-14», что я должен написать в инструкции select, чтобы выбрать все события, которые происходят сегодня?

Я делаю так

  cur =new Date();
alert(cur);
db.transaction(function(tx){
    tx.executeSql("select NOTE_DESC,NOTE_DATE,NOTE_TIME,ALERT_TIME,NOTES_MORE_DETAILS from NOTES where NOTE_DATE = " cur " order by NOTE_TIME asc limit 0,1",[], alert("yes"),onError);
});
  

В котором мой запрос:

 select NOTE_DESC, NOTE_DATE, NOTE_TIME, ALERT_TIME, NOTES_MORE_DETAILS 
from NOTES 
where NOTE_DATE = " cur " 
order by NOTE_TIME asc 
limit 0,1
  

но появляется сообщение об ошибке «около октября: синтаксическая ошибка»

Как я должен выполнить сравнение дат в sql??

Ответ №1:

Я полагаю, вы хотите:

 NOTE_DATE = '" cur.getFullYear() '-' (cur.getMonth() 1) '-' cur.getDate() "'
  

Обратите внимание на ' перенос значения переменной запроса и вызов методов объекта cur date для построения даты.

http://jsfiddle.net/yXgDw/

А еще лучше, используйте подготовленный запрос:

http://www.w3.org/TR/webdatabase/#dom-sqltransaction-executesql

http://www.w3.org/TR/webdatabase/#introduction

Комментарии:

1. Это работает, когда я делаю вот так cur.getFullYear() ‘-‘ (cur.getMonth() 1) ‘-‘ cur.getDate()

2. Да, вы правы. Мне было интересно, почему они не сообщают правильно. :)

3. Можете ли вы обновить свой ответ кодом в комментарии, чтобы упростить его для других разработчиков, которые могут столкнуться с той же проблемой 🙂

4. Я сделал, по крайней мере, я думаю, что сделал?