Vous pouvez mapper des données de type Integer ou String d'une table de données vers des données de type Date dans divers formats au sein d'un index de recherche créé pour cette table. Lorsque vous utilisez l'index de recherche pour effectuer une requête de plage, le type Date offre de meilleures performances que le type String.
Précision et plage
La précision maximale des données de type Date est la nanoseconde. La plage de valeurs des données de type Date est ["1970-01-01 00:00:00.000000000", "2262-04-11 23:47:16.854775807"].
Formats de date
Vous pouvez mapper des champs de type Integer ou String d'une table de données vers des champs de type Date dans un index de recherche créé pour cette table, et spécifiez le format des champs de type Date. Le tableau suivant décrit les formats disponibles.
Type de champ dans les tables de données | Format des champs de type Date dans les index de recherche |
Integer | Vous pouvez utiliser un format prédéfini. Les formats prédéfinis suivants sont proposés :
|
String | Les formats personnalisés sont pris en charge. Les éléments suivants décrivent les formats de date couramment utilisés :
Dans les formats précédents, yyyy spécifie l'année à quatre chiffres, MM spécifie le mois, dd spécifie le jour, HH spécifie l'heure au format 24 heures, mm spécifie la minute, ss spécifie la seconde, SSS spécifie la précision de la seconde et X spécifie le décalage du fuseau horaire. Pour plus d'informations, consultez Formats de date personnalisés. |
Formats de date personnalisés
Caractère | Description | Exemple |
y | L'année. |
|
M | Le mois. |
|
d | Le jour du mois. |
|
a | La période de la journée. Dans le système horaire sur 12 heures, une journée est divisée en deux périodes : ante meridiem (AM) et post meridiem (PM). AM spécifie avant midi et PM spécifie après midi. |
|
K | L'heure au format AM ou PM. Valeurs valides : 0 à 11. |
|
H | L'heure de la journée dans le système horaire sur 24 heures. Valeurs valides : 0 à 23. |
|
m | La minute. |
|
s | La seconde. |
|
S | La précision de la seconde. La précision peut contenir un à neuf chiffres. |
|
X | Le décalage du fuseau horaire. |
|
x | Le décalage du fuseau horaire. |
|
' | Le qualificateur personnalisé. | Vous pouvez utiliser des lettres pour définir des qualificateurs personnalisés. Si vous utilisez une chaîne comme qualificateur, celle-ci doit être entourée de guillemets simples (''). Important Les espaces et les traits d'union (-) n'ont pas besoin d'être inclus entre guillemets simples. |
'' | Le caractère d'échappement. | '' |
Vérification d'un format de date
Avant d'utiliser un format de date pour interroger des données, nous vous recommandons d'utiliser TermQuery ou DateTimeFormatter dans JDK 8 ou une version ultérieure pour vérifier la validité du format de date.
Utilisation de TermQuery
Créez un index de recherche incluant des champs au format de date spécifié et utilisez TermQuery pour vérifier le format de date. Si aucune erreur n'est renvoyée, le format de date est valide.
public void testDateFormat(SyncClient client, String tableName, String indexName) {
// Create a search index.
CreateSearchIndexRequest request = new CreateSearchIndexRequest();
request.setTableName(tableName);
request.setIndexName(indexName);
IndexSchema indexSchema = new IndexSchema();
indexSchema.setFieldSchemas(Arrays.asList(
new FieldSchema("col_date", FieldType.DATE)
.setIndex(true)
.setEnableSortAndAgg(true)
.setDateFormats(Arrays.asList("yyyy-MM-dd HH:mm:ss.SSS"))
));
request.setIndexSchema(indexSchema);
client.createSearchIndex(request);
// Check the Date format. If no error is returned, the Date format is valid.
client.search(SearchRequest.newBuilder()
.tableName(tableName)
.indexName(indexName)
.searchQuery(SearchQuery
.newBuilder()
.query(QueryBuilders.term("col_date", "2022-12-12 12:10:03.123")).build())
.build());
}
Utilisation de DateTimeFormatter
Si vous utilisez cette méthode pour vérifier le format de date dans des fuseaux horaires spécifiques, des erreurs peuvent se produire.
Assurez-vous d'avoir installé JDK 8 ou une version ultérieure.
Appelez la méthode DateTimeFormatter dans JDK pour vérifier le format de date. Si aucune erreur n'est renvoyée, le format de date est valide.
import java.time.format.DateTimeFormatter;
public void testFormatByJdk8() {
DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.SSS").parse("2022-12-12 12:10:03.123");
}
Références
Pour utiliser des données de type Date, vous pouvez configurer le champ Date lors de la création d'un index de recherche dans la console Tablestore ou à l'aide des SDK Tablestore. Pour plus d'informations, consultez Créer un index de recherche.
Search Index prend en charge divers types de requêtes pour les interrogations de données multidimensionnelles, notamment requête term, requête terms, requête match all, requête match, requête phrase match, requête range, requête prefix, requête suffix, requête wildcard, requête token-based wildcard, requête boolean, requête geo, requête nested, recherche vectorielle, et requête exists.
Si vous souhaitez analyser les données d'une table de données, vous pouvez utiliser la fonctionnalité d'agrégation de l'opération Search ou exécuter des instructions SQL. Par exemple, vous pouvez obtenir les valeurs minimales et maximales, la somme et le nombre total de lignes. Pour plus d'informations, consultez Agrégation et Requête SQL.
Pour exporter rapidement des données indépendamment de l'ordre de l'ensemble de résultats, vous pouvez utiliser la fonctionnalité Parallel Scan.