Sqlite convertit une chaîne de date
J'ai la date stockée comme une chaîne de caractères dans une base de données sqlite comme "28/11/2010".
Je veux convertir la chaîne de date.
Spécifiquement-je convertir des lots de la chaîne de dates entre les deux dates.
Dans postgresql, j'utilise to_date('30/11/2010','dd/MM/yyyy')
, comment puis-je faire la même chose avec sqlite?
Quelque chose comme ceci:
SELECT * FROM table
WHERE to_date(column,'dd/MM/yyyy')
BETWEEN to_date('01/11/2010','dd/MM/yyyy')
AND to_date('30/11/2010','dd/MM/yyyy')
- Trouvé ce tutoriel, très clairement écrit, peut ajouter un peu de clarté: sqlitetutorial.net/sqlite-date
Vous devez vous connecter pour publier un commentaire.
Comme Sqlite n'ont pas de type date vous aurez besoin de faire de comparaison de chaîne pour atteindre cet objectif. Pour que cela fonctionne vous devez inverser l'ordre - par exemple à partir du jj/MM/aaaa à aaaammjj, en utilisant quelque chose comme
to_date
fonction, mais la façon de le faire dépend de ce que SQLite est intégré dans (dont nous ne connaissons pas).to_date
fonction, ce qui est le pari que pas toutes les chaînes, dans ce domaine, ne sont pas des dates valides 🙂Les données enregistrées en tant que TEXTE( 20/10/2013 03:26 )
Pour faire une requête et de sélectionner les enregistrements entre les dates?
Meilleure version est:
la substr du 20/10/2013 donne 20131020
format de la date DATE(20131021) - qui rend SQL de travail et les dates à l'aide de fonctions de date et heure.
OU
et ici, c'est dans une ligne
Une chose que vous devez examiner est le SQLite fonctions de date et heure, surtout si vous allez avoir à manipuler un grand nombre de dates. C'est la façon saine utilisation de dates, le coût de changer le format interne (à l'ISO, c'est à dire aaaa-MM-jj).
L'UDF approche est ma préférence par rapport à une fragilité
substr
valeurs.Cela vous donne ces résultats:
L'SQLite équivalent de tout ce solide est un enchevêtrement de tissage de
substr
etinstr
les appels que vous devriez éviter.C'est pour fecha(TEXTE) format de date AAAA-MM-jj HH:mm:ss pour l'exemple je veux que tous les enregistrements de Ene-05-2014 (2014-01-05):
Je suis le stockage de la date de 'DD-MON-YYYY format (10-Juin-2016) et en dessous de la requête fonctionne pour moi à la recherche de dossiers entre 2 dates.
Si la Source de format de Date n'est pas compatible il y a un problème
avec
substr
fonction, par exemple:1/1/2017 ou 1/11/2017 ou 11/11/2017 ou 1/1/17
etc.
J'ai donc suivi un autre apporach à l'aide d'une table temporaire. Cet extrait de sorties 'YYYY-MM-DD' + temps s'il existe.
Noter que cette version accepte Jour/Mois/Année. Si vous voulez Jour/Mois/Année
changer les deux premières variables
DayPart
etMonthPart
. Aussi, deux dates d'année '44-'99 suppose 1944-1999, alors que '00-'43 suppose 2000-2043.J'ai une base de données où les dates sont stockées dans
d F Y
format (20 Novembre 2017) et de le convertir lisibles à la machine date(Y-m-d) j'ai utiliser cette méthode pour mettre à jour toute la table pour un format approprié.Si vous voulez seulement le formatage de la date de regarder à l'intérieur, sélectionnez la façon dont j'ai formaté la date.