Sélection par mois dans le champ date / heure à l'aide d'ArcGIS Desktop?


13

Je souhaite sélectionner un mois spécifique dans mon champ de date / heure dans ArcGIS, et je n'arrive pas à trouver une déclaration qui fonctionnera.

J'ai plusieurs années et plusieurs jours, mais je souhaite les filtrer et ne choisir que les enregistrements du mois de mai.


Où sont stockées vos données? fGDB? fichier de formes? Serveur SQL? Oracle?
Derek Swingley

Comment recherchez-vous les données? Je sais qu'il y a un bug où l'élément time de datetime ne s'affiche pas si l'heure est minuit. N'oubliez pas non plus que les paramètres régionaux sont importants dans l'ordre des données, des mois, en particulier. Il existe toute une série d'opérations que vous pouvez utiliser en Python ou VBS pour diffuser des données de date, ainsi que du côté d'Oracle (Entre, etc ...).
Hairy

Les données sont stockées dans un fichier de formes.

Merci! était utile - j'ai fait ma sélection par dates très rapidement!

bienvenue dans GIS.StackExchange. La «Votre réponse» est destinée aux réponses potentielles à la question posée, pas aux commentaires. N'hésitez pas à laisser un commentaire sous la réponse qui vous a le mieux fonctionné, et appuyez sur le bouton "vote positif" pour donner plus de crédibilité à cette réponse. De cette façon, les nouveaux lecteurs pourront deviner quelle réponse est la plus susceptible d'aider.
RyanKDalton

Réponses:


8

Peut-être quelque chose comme ça:

  1. Ouvrez la table d'attributs du fichier de formes et cliquez sur Options> Sélectionner par attributs
  2. Tapez DatePart("M", [YourDateField]) = 5(pour mai) et cliquez sur Appliquer.

Cet exemple de code fonctionne très bien. Je l'ai en fait utilisé pour calculer une nouvelle valeur de champ pour le mois en fonction du mois DatePart.
RyanKDalton

6

La syntaxe varie selon l'endroit où les données sont extraites (fichier gdb, shapefile, personal gdb, Oracle, DB2, etc.).

Géodatabase fichier, fichiers de formes et données basées sur des fichiers tels que les fichiers dbf :

Tout en mai:

EXTRACT(MONTH FROM "MyDate") = 05

Avant midi:

EXTRACT(HOUR FROM "MyDate") < 12

Géodatabase personnelle ( .mdb ):

DATEPART("m", [MyDate]) = 05

SQL Server :

DATEPART(month, MyDate) = 05

Pour plus de détails tels que d'autres limitations et requête par heure / année / etc. voir le Esri HowTo: Rechercher des parties spécifiques d'une date stockée dans un champ Date-Heure . Pour des exemples étendus utilisant Field Calculator, voir ArcWatch Simplify Date and Time Calculations .


2
Je veux juste ajouter un commentaire pour aider les autres à lire cette réponse. Je faisais l'erreur de mettre la valeur du mois entre guillemets (par exemple EXTRACT (MONTH FROM "MyDate") = '05') en pensant que je retournais une chaîne mais EXTRACT renvoie le jour, le mois ou l'année sous forme d'entier.
Hornbydd

5

Dans ArcGIS 10 (fonctionne probablement de la même manière dans les versions antérieures de l'outil de sélection par attributs, vous pouvez spécifier que l'instruction de sélection doit avoir une plage entre le début du mois et la fin du mois, mais la syntaxe dans ArcMap est étrange.

La requête de sélection doit ressembler à ceci:

"DateField" >= date '05/01/2011 00:00:00' AND "DateField" < date '06/01/2011 00:00:00'

J'ai utilisé Excel pour créer une longue liste de plages de mois, puis j'ai utilisé le générateur de modèles pour créer un script à sélectionner par lot à l'aide de la requête ci-dessus, mettre à jour un champ `` Trier par '', puis exporter vers un fichier autonome de base de données de base de données.


mes données source se trouvent dans une géodatabase fichier.
Max Squires

1
Cela marche! Il est dommage que vous deviez l'écrire pour CHAQUE année dans le jeu de données. Merci!

3

Essayez quelque chose comme ...

Select DatePart(MM, GetDate()) as Current_Month

2

Vous devriez pouvoir utiliser la fonction de base de données appropriée pour interroger le mois à partir du champ de date. Par exemple, dans Oracle, vous pouvez sélectionner par attribut où To_Char([date],'MM') = 4.


1

Un script simple à écrire serait d'obtenir la date dans son intégralité, puis de la diviser:

Time = "2011-04-06 11:26:51"
Month = newTime.split("-")[1]

Faites ensuite votre comparaison sur la valeur du mois


0

Hack horrible, mais vous pouvez exporter votre table attributaire en .csv; importer dans Excel et analyser l'année / mois / jour dans Excel. Ensuite, joignez cette feuille de calcul Excel à votre tableau et triez le mois.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.