Auswählen nach Monat im Datums- / Uhrzeitfeld mit ArcGIS Desktop?


12

Ich möchte aus meinem Datums- / Zeitfeld in ArcGIS einen bestimmten Monat auswählen und kann anscheinend keine Aussage finden, die funktioniert.

Ich habe mehrere Jahre und mehrere Tage, möchte diese aber herausfiltern und nur die Datensätze aus dem Monat Mai auswählen.


Wo werden Ihre Daten gespeichert? fGDB? Shapefile? SQL Server? Orakel?
Derek Swingley

Wie suchen Sie nach den Daten? Ich weiß, dass es einen Fehler gibt, bei dem das Zeitelement von datetime nicht anzeigt, ob die Zeit Mitternacht ist. Denken Sie auch daran, dass das Gebietsschema in der Reihenfolge der Daten wichtig ist, insbesondere in Monaten. Es gibt eine ganze Reihe von Operationen, die Sie in Python oder VBS verwenden können, um Datumsdaten zu verbreiten, sowie auf Oracle-Seite (Between, etc ...).
Behaarte

Daten werden in einem Shapefile gespeichert.

Danke! war nützlich - ich habe meine Auswahl nach Datum sehr schnell getroffen!

Willkommen bei GIS.StackExchange. Die "Ihre Antwort" ist für mögliche Antworten auf die jeweilige Frage gedacht, nicht für Kommentare. Fühlen Sie sich frei, einen Kommentar unter der Antwort zu hinterlassen, die für Sie am besten funktioniert hat, und klicken Sie auf die Schaltfläche "Nach oben", um dieser Antwort mehr Glaubwürdigkeit zu verleihen. Auf diese Weise können neue Leser erkennen, welche Antwort am wahrscheinlichsten hilfreich ist.
RyanKDalton

Antworten:


7

Vielleicht so etwas:

  1. Öffnen Sie die Shapefile-Attributtabelle und klicken Sie auf Optionen> Nach Attributen auswählen
  2. Geben Sie DatePart("M", [YourDateField]) = 5(für Mai) ein und klicken Sie auf Übernehmen.

Dieses Codebeispiel funktioniert sehr gut. Ich habe es tatsächlich verwendet, um neue Feldwerte für den Monat basierend auf dem Month DatePart zu berechnen.
RyanKDalton

6

Die Syntax hängt davon ab, woher die Daten abgerufen werden (Datei gdb, Shapefile, persönliche gdb, Oracle, DB2 usw.).

File-Geodatabase, Shapefiles und dateibasierte Daten wie DBF- Dateien:

Alles im Mai:

EXTRACT(MONTH FROM "MyDate") = 05

Vormittags:

EXTRACT(HOUR FROM "MyDate") < 12

Persönliche Geodatabase ( .mdb ):

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

SQL Server :

DATEPART(month, MyDate) = 05

Für weitere Details wie weitere Einschränkungen und Abfragen nach Stunde / Jahr / etc. Weitere Informationen finden Sie in der Anleitung zu Esri: Nach bestimmten Teilen eines Datums suchen, die in einem Datum / Uhrzeit-Feld gespeichert sind . Erweiterte Beispiele für die Verwendung von Field Calculator finden Sie unter ArcWatch - Vereinfachen von Datums- und Zeitberechnungen .


2
Fügen Sie einfach einen Kommentar hinzu, damit andere diese Antwort lesen können. Ich habe den Fehler gemacht, den Monatswert in Anführungszeichen (z. B. EXTRACT (MONTH FROM "MyDate") = '05') zu setzen, weil ich eine Zeichenfolge zurückgegeben habe, aber EXTRACT gibt den Tag, den Monat oder das Jahr als Ganzzahl zurück.
Hornbydd

5

In ArcGIS 10 (das in früheren Versionen wahrscheinlich ähnlich funktioniert, können Sie im Auswahlwerkzeug nach Attributen festlegen, dass die Auswahlanweisung einen Bereich zwischen dem Monatsanfang und dem Monatsende aufweist. Die Syntax in ArcMap ist jedoch ungewöhnlich.

Die Auswahlabfrage sollte folgendermaßen aussehen:

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

Ich habe Excel verwendet, um eine lange Liste von Monatsbereichen zu erstellen, und dann mit Model Builder ein Skript erstellt, um eine Stapelauswahl anhand der obigen Abfrage durchzuführen, ein Feld "Sortieren nach" zu aktualisieren und dann in eine eigenständige Dateidatenbank-Feature-Class zu exportieren.


Meine Quelldaten befinden sich in einer File-Geodatabase.
Max Squires

1
Das funktioniert! Es ist schade, dass Sie es für JEDES Jahr in den Datensatz schreiben müssten. Vielen Dank!

3

Versuchen Sie etwas wie ...

Select DatePart(MM, GetDate()) as Current_Month

2

Sie sollten die entsprechende Datenbankfunktion verwenden können, um den Monat aus dem Datumsfeld abzufragen. In Oracle können Sie beispielsweise nach Attribut auswählen, wo To_Char([date],'MM') = 4.


1

Ein einfaches Skript zum Schreiben wäre, das Datum vollständig abzurufen und es dann zu teilen:

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

Dann vergleichen Sie den Monatswert


0

Schrecklicher Hack, aber Sie könnten Ihre Attributtabelle nach .csv exportieren; In Excel importieren und Jahr / Monat / Tag in Excel analysieren. Fügen Sie dann dieses Excel-Arbeitsblatt zu Ihrer Tabelle hinzu und sortieren Sie nach dem Monat.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.