Как да заявите конкретни дати в JavaScript в базата данни на Sqlite

SQLite в комбинация с JavaScript ми затруднява датите.

За по-голяма яснота вмъквам дата "01-01-1999", използвайки:

var yy =  "01-01-1999";
var yyy = new Date (yy.replace( /(\d{2})-(\d{2})-(\d{4})/, "$3-$2-$1") );  //date into YYYY-MM-DD format

db.transaction (function (transaction) 
{
  var sql = "INSERT INTO happyPeople (datum, name, event) VALUES (?, ?, ?)";
  transaction.executeSql (sql, [yyy, fNameIn, fEventIn], function ()
  { 
    alert (fNameIn + " inserted with date " + yyy );
  }, error);

Търсенето в db наистина показва "петък, 1 януари 1999 г. 01:00:00 GMT+0100 (CET)"

но...

когато питам за същия ден (01-01-1999) с

var sql = "SELECT * FROM happyPeople WHERE datum  = strftime ('%Y-%m-%d','1999-01-01')";

Не получавам резултати, което означава, че няма грешка, но празен списък за връщане. Ако заменя '=' на '!=', получавам всички записи, така че изглежда, че заявката работи. Полето в SQLite db, което съдържа датата, е дефинирано като VARCHAR[50], но опитах и ​​TEXT. Същият резултат.

И така, как да вмъкна дата (без да се интересувам от времето) в базата данни и как да направя запитване към тях?

Благодаря!


person thewall    schedule 08.03.2014    source източник


Отговори (1)


SQLite няма отделен тип данни за дати; използвате низ или число.

Правилно преобразувахте низа във формат yyyy-mm-dd. Това, което не е наред с кода, е, че след това създава Date обект. Както можете да видите от съобщението, yyy не е низ в правилния формат.

Просто премахнете new Date и използвайте низа директно.

person CL.    schedule 08.03.2014
comment
И наистина това проработи. Не съм сигурен дали разбирам, но да, мога да попитам сега. Благодаря - person thewall; 08.03.2014