Convertir campo de cadena de fecha y hora en el campo de Azure de almacenamiento de tabla

StackOverflow https://stackoverflow.com/questions/4634576

  •  08-10-2019
  •  | 
  •  

Pregunta

Tengo un campo en una tabla de Azure que mantiene tiempos fecha en formato de cadena. Quiero reemplazar esto con un campo DateTime y convertir los valores en la columna de la cadena. Cuál es la mejor manera de abordar esto?

En un SQL me gustaría hacer esto mediante la creación de una nueva columna y ejecutar una instrucción de actualización ...

¿Fue útil?

Solución

no he probado esto por mí mismo, pero aquí están los pasos que / debería / trabajo. Esto tiene que ser un C # / VB / etc guión.

  1. Cambiar la definición de la clase que contiene a / nueva / miembro de tipo fecha y hora.
  2. Ejecutar la consulta LINQ para cargar todas las filas de la tabla, y ejecutar un bucle for que poblar nueva variable de fecha y hora basado en una variable de cadena de edad.
  3. Guarde los objetos a la mesa. // ahora su almacenamiento de tabla contiene objetos con nueva y vieja definición de esa variable
  4. Eliminar el viejo campo de definición de la clase
  5. Cargar los objetos de la mesa de nuevo y guardarlos w / o hacer cualquier cosa, pero marcándolos sucio. Este / debería / deshacerse del antiguo miembro de las estructuras serializados dentro de la tabla. Ahora, si desea que el nuevo campo de fecha y hora para tomar el nombre de la variable de cadena original hacer los pasos 1 a 5, esta vez de mover los datos de un campo a otro. La única diferencia es que usted no tiene que hacer la conversión de nuevo.

En general, este es un PITA completa y uno de los banes de bases de datos de objetos y servicios de almacenamiento.

Otros consejos

El Azure Storage Table cliente entiende de forma nativa DateTime (pero no DateTimeOffset), por lo que es posible que desee considerar simplemente dejar que el SDK se encargue del asunto para usted.

De lo contrario, la mejor manera de representar DateTime como cadenas es para almacenar y recuperar de forma explícita como valores UTC escritos y analizados utilizando la "u" de formato, por ejemplo.

var dateAsString = myDateTime.ToString("u");

No tengo idea de si funcionará, pero se puede tratar "feliz ignorancia":

tienda

Clasificación Real en realidad no se preocupan por la forma de sus entidades (tela Dev puede ser diferente). Cambiar la propiedad de entidad a DateTime, pero en la prueba Setter el valor es una fecha y hora, si no es analizar el valor en un DT. Algo así como

private DateTime myDT
public DateTime MyDT
{
    get
    {
        return myDT;
    }
    set
    {
       DateTime = null;
       if(value is DateTime)
       {
           myDT = value;
       }
       else
       {
           myDT = DateTime.Parse(value);
       }
    }

}

Con suerte con el tiempo, o explícitamente en un lote, si simplemente cargar las entidades y guardarlos de nuevo que va fijado a todos a DateTime.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top