¿Seleccionar por mes en el campo de fecha / hora usando ArcGIS Desktop?

13

Me gustaría seleccionar un mes específico de mi campo de fecha / hora en ArcGIS, y parece que no puedo encontrar una declaración que funcione.

Tengo varios años y varios días, pero quiero filtrarlos y solo elegir los registros del mes de mayo.

PolyGeo
fuente
¿Dónde se almacenan sus datos? fGDB? archivo de forma? ¿Servidor SQL? ¿Oráculo?
Derek Swingley
¿Cómo estás buscando los datos? Sé que hay un error en el que el elemento de hora de datetime no muestra si la hora es medianoche. Recuerde también que la configuración regional es importante en el orden de los datos, meses, especialmente. Hay una gran cantidad de operaciones que puede usar en Python o VBS para difundir datos de fechas, así como en el lado de Oracle (entre, etc.).
Peludo
Los datos se almacenan en un shapefile.
¡gracias! fue útil. ¡Hice mi selección por fechas muy rápidamente!
Bienvenido a GIS.StackExchange. "Su respuesta" está destinada a posibles respuestas a la pregunta en cuestión, no a comentarios. Siéntase libre de dejar un comentario debajo de la respuesta que mejor funcionó para usted, y presione el botón "upvote" para darle más credibilidad a esa respuesta. De esa manera, los nuevos lectores podrán determinar qué respuesta es más probable que ayude.
RyanKDalton

Respuestas:

8

Quizás algo como esto:

  1. Abra la tabla de atributos de shapefile y haga clic en Opciones> Seleccionar por atributos
  2. Escriba DatePart("M", [YourDateField]) = 5(para mayo) y haga clic en Aplicar.
JamesS
fuente
Este ejemplo de código funciona muy bien. De hecho, lo usé para calcular los valores de un nuevo campo para el mes basado en el DatePart del mes.
RyanKDalton
6

La sintaxis varía dependiendo de dónde se obtienen los datos (archivo gdb, shapefile, gdb personal, Oracle, DB2, etc.).

Geodatabase de archivos, archivos de forma y datos basados ​​en archivos , como archivos dbf :

Todo en mayo:

EXTRACT(MONTH FROM "MyDate") = 05

Antes del mediodía:

EXTRACT(HOUR FROM "MyDate") < 12

Geodatabase personal ( .mdb ):

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

Servidor SQL :

DATEPART(month, MyDate) = 05

Para obtener más detalles, como limitaciones adicionales y consultas por hora / año / etc. consulte el Cómo de Esri : busque partes específicas de una fecha almacenada en un campo Fecha-Hora . Para ver ejemplos extendidos utilizando la Calculadora de campo, consulte ArcWatch Simplify Date and Time Calculations .

wilkie mate
fuente
2
Solo quiero agregar un comentario para ayudar a otros a leer esta respuesta. Cometí el error de ajustar el valor del mes entre comillas (por ejemplo, EXTRACT (MONTH FROM "MyDate") = '05') pensando que estaba devolviendo una cadena pero EXTRACT devuelve el día, mes o año como un entero.
Hornbydd
5

En ArcGIS 10 (probablemente funciona de manera similar en versiones anteriores en la herramienta Seleccionar por atributos, puede especificar que la instrucción de selección tenga un rango entre el comienzo del mes y el final del mes, pero la sintaxis en ArcMap es extraña.

La consulta de selección debería verse así:

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

Utilicé Excel para hacer una larga lista de rangos de meses y luego usé el generador de modelos para hacer un script para seleccionar por lotes mediante la consulta anterior, actualizar un campo 'ordenar por' y luego exportar a una clase de entidad de base de datos de base de datos independiente.

Max Squires
fuente
mis datos de origen están en una geodatabase de archivos.
Max Squires
1
¡Esto funciona! Es una pena que tenga que escribirlo CADA año en el conjunto de datos. ¡Gracias!
3

Intenta algo como ...

Select DatePart(MM, GetDate()) as Current_Month
Brad Nesom
fuente
2

Debería poder utilizar la función de base de datos adecuada para consultar el mes desde el campo de fecha. Por ejemplo, en Oracle puede seleccionar por atributo where To_Char([date],'MM') = 4.

Anthony -GISCOE-
fuente
1

Un script simple para escribir sería obtener la fecha en su totalidad, luego dividirlo:

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

Luego haga su comparación en el valor del mes

Peludo
fuente
0

Hack horrible, pero puedes exportar tu tabla de atributos a .csv; importar a Excel y analizar el año / mes / día en Excel. Luego, une esa hoja de cálculo de Excel a tu tabla y ordena el mes.

djq
fuente