Selezione per mese nel campo data / ora utilizzando ArcGIS Desktop?


13

Vorrei selezionare entro un mese specifico dal mio campo data / ora in ArcGIS e non riesco proprio a trovare un'istruzione che funzioni.

Ho più anni e più giorni, ma voglio filtrarli e scegliere solo i record del mese di maggio.


Dove sono archiviati i tuoi dati? fGDB? shapefile? Server SQL? Oracolo?
Derek Swingley,

Come stai cercando i dati? So che c'è un bug in cui l'elemento time di datetime non mostra se l'ora è mezzanotte. Ricorda anche che le impostazioni internazionali sono importanti nell'ordine dei dati, mesi, soprattutto. Esistono tutta una serie di operazioni che è possibile utilizzare in Python o VBS per divulgare i dati relativi alla data, nonché sul lato Oracle (Between, etc ...).
Peloso

I dati sono archiviati in uno shapefile.

grazie! è stato utile - ho fatto la mia selezione per date molto velocemente!

benvenuto in GIS.StackExchange. La "tua risposta" è pensata per potenziali risposte alla domanda attuale, non per commenti. Sentiti libero di lasciare un commento sotto la risposta che ha funzionato meglio per te e premi il pulsante "vota" per dare più credibilità a quella risposta. In questo modo i nuovi lettori saranno in grado di indovinare quale risposta è più probabile che aiuti.
RyanKDalton,

Risposte:


8

Forse qualcosa del genere:

  1. Apri la tabella degli attributi del file di forma e fai clic su Opzioni> Seleziona per attributi
  2. Digitare DatePart("M", [YourDateField]) = 5(per maggio) e fare clic su Applica.

Questo esempio di codice funziona davvero bene. L'ho effettivamente utilizzato per calcolare i valori di un nuovo campo per il mese in base al Month DatePart.
RyanKDalton,

6

La sintassi varia a seconda di dove vengono recuperati i dati (file gdb, shapefile, gdb personale, Oracle, DB2, ecc.).

File Geodatabase, shapefile e dati basati su file come file dbf :

Tutto a maggio:

EXTRACT(MONTH FROM "MyDate") = 05

Prima di mezzogiorno:

EXTRACT(HOUR FROM "MyDate") < 12

Geodatabase personale ( .mdb ):

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

SQL Server :

DATEPART(month, MyDate) = 05

Per maggiori dettagli come ulteriori limiti e query per ora / anno / ecc. vedere Esri HowTo: cercare parti specifiche di una data memorizzata in un campo Data-Ora . Per esempi estesi utilizzando Field Calculator, consultare ArcWatch per semplificare i calcoli di data e ora .


2
Voglio solo aggiungere un commento per aiutare gli altri a leggere questa risposta. Stavo commettendo l'errore di racchiudere il valore del mese tra virgolette (ad esempio EXTRACT (MONTH FROM "MyDate") = '05') pensando di restituire una stringa ma EXTRACT restituisce il giorno, il mese o l'anno come numero intero.
Hornbydd,

5

In ArcGIS 10 (probabilmente funziona in modo simile nelle versioni precedenti nello strumento di selezione per attributi, è possibile specificare che l'istruzione di selezione abbia un intervallo tra l'inizio del mese e la fine del mese, ma la sintassi in ArcMap è strana.

La query di selezione dovrebbe apparire così:

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

Ho usato Excel per fare un lungo elenco di intervalli di mesi e poi ho usato Model Builder per creare uno script per selezionare in batch la query sopra, aggiornare un campo 'ordina per' e quindi esportare in una cartella di file indipendente.


i miei dati di origine sono in un file geodatabase.
Max Squires,

1
Questo funziona! È un peccato che tu debba scriverlo per OGNI anno nel set di dati. Grazie!

3

Prova qualcosa come ...

Select DatePart(MM, GetDate()) as Current_Month

2

Dovresti essere in grado di utilizzare la funzione di database appropriata per eseguire una query sul mese dal campo data. Ad esempio, in Oracle è possibile selezionare per attributo dove To_Char([date],'MM') = 4.


1

Un semplice script da scrivere sarebbe quello di ottenere la data nella sua interezza, quindi dividerla:

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

Quindi fai il confronto sul valore del mese


0

Hack orribile, ma potresti esportare la tabella degli attributi in .csv; importare in Excel e analizzare l'anno / mese / giorno in Excel. Quindi unisci quel foglio di lavoro Excel alla tua tabella e ordina il mese.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.