Formato Linq DateTime ¿cómo usarlo?/Convertir?

programación


Estimado,

Ayúdame a convertir el formato de fecha y hora de LINQ

Ejemplo:

1, martes 26 de enero de 2012 (o)

2, martes, 26 de enero de 2012

¿Dame soluciones?

por mohan

Solución 1

V.B.
YearMonth = r.SomeDateTime.ToString("dddd, MMMM yyyy")

Solución 3

Linq no conoce los métodos de conversión “ToString ()”, por lo que cuando obtenga los datos, utilice enumerables como
var selectQuery = desde agregar en db.address.asEnumerable();

entonces ahora puedes usar los métodos convert o “tostring”.

Solución 4

(desde el nombre de clase en time.table seleccione t.Date).ToList().Select(d => d.ToString(“aaaa-MM-dd”);
prueba que funciona….

Solución 5

C#
var selectQuery=from add in db.address
                 select add.myDate.toString("{0:dddd, MMMM d, yyyy}");

selectQuery.Distinct();

prueba esto..

Saludos,
nishante

Solución 7

Formateo de marcas de fecha y hora del lado del servidor

En ocasiones resulta útil formatear el lado del servidor. Un ejemplo es agrupar marcas de tiempo con resolución inferior a segundos en grupos de una hora o un día.

En mi caso de uso, obtenemos 700.000 registros nuevos por día. Entonces el lado del servidor puede ser mucho más rápido. En este caso se agrupan 2,5 millones de registros en 4 días.

La aplicación de AsEnumerable funciona, pero tardará ~40 minutos (2500 segundos). Esto se extrapola del retorno de 1000/seg.

La agrupación del lado del servidor tarda aproximadamente 0,7 segundos. Esto se mide.

Estoy ejecutando un control remoto muy lento, pero ese es exactamente el punto. Las bases de datos alojadas siempre devuelven resultados a través de la red, por lo que la agregación en el servidor de base de datos permite que el motor de base de datos haga lo que está diseñado, localmente.

Algunas operaciones como toupper() o formatear cada registro deben realizarse localmente si es posible. El LinqToSQL/EF para formatear la fecha no es muy difícil, pero el SQL resultante es bastante complicado.

Agregar delimitadores es para humanos y no es necesario para agrupar. Incluso los métodos PadLeft() no son necesarios en la mayoría de los casos, pero hacen que la fecha y hora resultante sea fácil de ordenar léxicamente y de leer.

En este ejemplo configuré Hora, Min y Seg en 00 para agrupar los días.
Para agrupar por horas, descomente:

let Hour = Date.Hour.ToString().PadLeft(2, '0')
//let Hour = "00"

Este es sólo un ejemplo rápido y sucio. No es el código más rápido jamás creado.

Simplemente haciéndolo del lado del servidor se obtiene en 40 segundos. a menos de un segundo. Así que ya terminé por ahora.

Por cierto, este script se ejecuta en LinqPad solo en mi entorno. Así que edítelo según sus necesidades, pero no me pida que resuelva su problema específico.

void Main()
{
	var query =
	from cat in CATOperations

	let Date = cat.OperationDateTime

	let Year = Date.Year.ToString().PadLeft(4, '0')
	let Month = Date.Month.ToString().PadLeft(2, '0')
	let Day = Date.Day.ToString().PadLeft(2, '0')
	//let Hour = Date.Hour.ToString().PadLeft(2, '0')
	let Hour = "00"
	//let Minute = Date.Minute.ToString().PadLeft(2, '0')
	let Minute = "00"
	//let Second = Date.Second.ToString().PadLeft(2, '0')
	let Second = "00"

	let dateGroup = Year
		+ '/'
		+ Month
		+ '/'
		+ Day
		+ " "
		+ Hour
		+ ":"
		+ Minute
		+ ":"
		+ Second

	where Date > new DateTime(2024, 1, 9)
	//select new{Date, dateGroup};

	group 1 by dateGroup into g
	orderby g.Key
	let count = g.Count()

	select new { g.Key, count };

	query.Dump();
}

コメント

タイトルとURLをコピーしました