In meiner Datenbanktabelle durchführt habe ich eine Spalte, in Datum als Zeichenfolge gespeichert wird. Das Format ist der 29. Januar 2017. Jetzt möchte ich alle Zeilendaten dieser Tabelle abrufen, wobei das aktuelle Datum größer ist als das gespeicherte Datum. Ich sollte zuerst diese Spalte dateString in tatsächliches NSDate umwandeln und dann einen Vergleich mit dem aktuellen Datum machen, wodurch alle Zeilendaten abgerufen werden. Aber ich weiß nicht, wie ich die Abfrage schreiben soll. Jede Hilfe würde sehr geschätzt werden. Ich benutze sqlite.Schreiben sqlilte Abfrage für ersten datestring bisher Umwandlung und eine Übereinstimmung mit dem aktuellen Datum
Antwort
Sie haben unter Umwandlung von Datumsformatierer durchzuführen und als retrive Ihre Daten mit query:
//First You have to formate your date in your string date formate.
NSDateFormatter *dateformatter = [[NSDateFormatter alloc] init];
[dateformatter setDateFormat:@"YYYY-MM-DD HH:MM:SS.SSS"];
NSString *currentDate=[dateformatter stringFromDate:[NSDate date]];
//Your Query
NSString *fetchQuery = [NSString stringWithFormat:@"SELECT * FROM TableName WHERE date < '%@'",currentDate];
Edit:
Schauen Sie sich das Bildschirmfoto:
-Link:https://www.sqlite.org/datatype3.html#datetime
Wenn Sie Zeichenfolge Datum Vergleich wollen, müssen Sie Datum ameisen SQLite
, das und als SQLite
< &> Funktion arbeitet mit dieser Abfrage folgen.
Also tun Sie einfach eine Sache, wo Sie Daten formatieren Format Datum ändern und Daten in DB einfügen und als alles funktioniert wie erwartet.
Hoffe, das wird Ihnen helfen, richtige Daten zu erhalten.
Dies liefert falsche Einträge wie '14. Januar 2016', '23. Januar 2017' ...... etc. wenn nach '27. Dezember 2017' gesucht. Kann sein, weil String hier verglichen wird, anstatt tatsächliche Daten. – mars
Sie können Daten nicht als Zeichenfolgen in diesem Format vergleichen. Der Name des Monats wird alphabetisch verglichen. Und es geht nicht um verschiedene Sprachen. – rmaddy
Bitte überprüfen Sie meine aktualisierte Antwort – CodeChanger
Die beste Möglichkeit ist das Speichern von Datumsstrings in SQlite-Zeit String-Format ex YYYY-MM-DD
So können Sie datetime direkt vergleichen.
Hier SQLite-Abfrage in Ihrem Fall ist (ich habe Test in Terminal)
create table TestData (rowID integer, date_string varchar(10));
insert into TestData values(0, 'Jan 27, 2017');
insert into TestData values(1, 'Jan 28, 2017');
insert into TestData values(2, 'Feb 10, 2017');
insert into TestData values(3, 'Feb 12, 2017');
insert into TestData values(4, 'Feb 13, 2017');
insert into TestData values(5, 'Aug 20, 2016');
insert into TestData values(6, 'Aug 21, 2017');
insert into TestData values(7, 'Aug 22, 2017');
, wenn ich alle Abfrage
select * from TestData;
0|Jan 27, 2017
1|Jan 28, 2017
2|Feb 10, 2017
3|Feb 12, 2017
4|Feb 13, 2017
5|Aug 20, 2017
6|Aug 21, 2017
7|Aug 22, 2017
Und hier ist wählen Sie brauchen, wenn ich alle Reihe mit date >= '20170210'
select rowID,replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(date_string, 'Jan', '01'), 'Feb', '02'), 'Mar', '03'), 'Apr', '04'), 'May', '05'), 'Jun', '06'), 'Jul', '07'), 'Aug', '08'), 'Sep', '09'), 'Oct', '10'), 'Nov', '11'), 'Dec', '12') as date_time_string
from TestData
where substr(date_time_string, 8)||substr(date_time_string, 1, 2)||substr(date_time_string, 4, 3) >= '20170210';
2|02 10, 2017
3|02 12, 2017
4|02 13, 2017
6|08 21, 2017
7|08 22, 2017
Es scheint schlecht zu sein, hoffe das hilft Ihnen.
- 1. javascript regexp Mit dem ersten und dem längsten Übereinstimmung
- 2. SQL-Abfrage mit Ergebnissen basierend auf dem aktuellen Datum
- 3. Elasticsearch Datum Historam mit dem ersten Dokument
- 4. Übereinstimmung und Gruppierung nach Datum
- 5. Exit Rekursion nach dem ersten Wort Übereinstimmung
- 6. lazarus/pascal Schreibdateinamen mit dem aktuellen Datum
- 7. Stop-Excel von Zahlenwerten bisher Umwandlung, wenn
- 8. So vergleichen Sie Datum mit dem aktuellen Datum in PHP
- 9. So deaktivieren Sie die Schaltfläche für das vorherige Datum vor dem aktuellen Datum? Android
- 10. DateTime.TryPase (DateString einige beginnt mit Monat und andere mit Tag)
- 11. eine Abfrage schreiben und eine Punktzahl geben
- 12. iOS Datum Zeitzone Umwandlung nicht
- 13. für Datum und Uhrzeit Umwandlung php
- 14. So erhalten Sie den aktuellen Datensatz und vergleichen das Datum mit dem aktuellen Datum
- 15. MySQL Datum Spalte Auto füllen mit dem aktuellen Datum
- 16. Fehler mit Jahr/Quartal bisher Umwandlung in Zoo Bibliothek
- 17. Bestellen Reihen durch engste Übereinstimmung mit der Wiederholung bisher
- 18. Trigger-Brennen mit dem aktuellen Datum auf Datum Differenz basiert
- 19. Abfrage erstellen passend zum aktuellen Datum
- 20. Anzahl der Tage zwischen dem aktuellen Datum und Datum Feld
- 21. Abfrage Differenz zwischen dem aktuellen Datum zu erhalten und Mindestdatum für die id
- 22. Berechnen jährliches Datum mit dem aktuellen Datum in mvc4
- 23. Wie Recorder Audio mit dem aktuellen Datum und Uhrzeitformat
- 24. Das Datum in der Datumsauswahl mit dem aktuellen Datum vergleichen
- 25. MomentJS Datum Umwandlung
- 26. Wie ersetzt man eine Wieder-Übereinstimmung durch eine Umwandlung dieser Übereinstimmung?
- 27. Vergleichen Sie das Datum mit dem aktuellen Datum
- 28. MySQL Abfrage Datensätze zu zeigen, mit dem aktuellen Datum auf und andere als pro absteigender Reihenfolge
- 29. SQL - Datum suchen, das dem aktuellen Datum am nächsten ist
- 30. Wochentag ab dem aktuellen Datum abrufen und den ersten Tag der Woche angeben
müssen Sie stringDate in NSDate konvertieren, nachdem Sie Daten von sqlite abgerufen haben? – Ronak
besseres Speicherdatum als DateTime-Format, und Sie können direkt – larva
vergleichen Was ist der Punkt der Konvertierung, nachdem Daten abgerufen wurden. Zuerst muss ich die Daten abgleichen und dann nur die Daten abrufen, die dem oben genannten Kriterium entsprechen. – mars