在SQL中,我这样做:
DateMonth=convert(datetime, convert(char(6), AASI.Inv_Acctcur) + '01')
如何在LINQ中执行此操作?字符串采用以下格式:
"yyyyMMdd"
谢谢,
ILE
编辑:
SQL用法示例:
SELECT convert(datetime, '20161023', 112) -- yyyymmdd
在此处找到:http://www.sqlusa.com/bestpractices/datetimeconversion/
答案 0 :(得分:4)
This page on MSDN documentation列出LINQ to SQL
不支持的所有转换方法。
Convert.ToDateTime
。所以,我猜你可以用Convert.ToDateTime
做你想做的事。
答案 1 :(得分:2)
对于LINQ或任何LINQ over Expression树启用的提供程序(例如LINQ to SQL,LINQ to Entities,LINQ to NHibernate,LLBLGen Pro等等),这不是典型的事情。这只是一个语言问题。您想知道如何将格式yyyyMMdd转换为DateTime
。
诀窍是保留LINQ(通过表达式树)查询的转换OUT,因为LINQ提供程序将无法转换它,或者如果可以,您将获得特定于提供程序的实现。
因此,诀窍是将其作为字符串从数据库中删除(或者当然更好:更改数据库模型)并将其转换为.NET中的DateTime
。例如:
// Doing .ToArray is essential, to ensure that the
// query is executed right away.
string[] inMemoryCollectionStrings = (
from item in db.Items
where some_condition
select item.Inv_Acctcur).ToArray();
// This next query does the translation from string to DateTime.
IEnumerable<DateTime> dates =
from value in inMemoryCollectionStrings
select DateTime.ParseExact(value, "yyyyMMdd",
CultureInfo.InvariantCulture);
换句话说,您可以使用以下行进行转换:
DateTime.ParseExact(value, "yyyyMMdd", CultureInfo.InvariantCulture);