首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >LINQ to SQL等价物ISDATE()在T-SQL和casting?

LINQ to SQL等价物ISDATE()在T-SQL和casting?
EN

Stack Overflow用户
提问于 2009-03-03 17:21:59
回答 4查看 1.7K关注 0票数 2

有人知道LINQ to SQL查询语法中ISDATE()的等价物吗?我在SQL中有一个varchar字段,它包含日期,我需要过滤掉非日期行。

希望是这样的:

代码语言:javascript
复制
var query = SomeDataContext;
    query = from p in query
    where p.ISDATE(field1) == true;
    select p;

另外,如何在Linq语法中为SQL转换一些内容?

代码语言:javascript
复制
CAST(SomeDate AS SMALLDATETIME)
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2009-03-03 19:02:31

执行此操作的技巧是在数据库中创建一个用户函数,该函数仅在返回值时调用ISDATE

代码语言:javascript
复制
  CREATE FUNCTION My_ISDATE(@maybeDate varchar(max))
  returns bit
  as return ISDATE(@maybeDate);

然后将My_IsDate添加到数据库上下文中,并在查询中使用它:

代码语言:javascript
复制
var db = SomeDataContext;
var query = from p in db.MyTable
where db.My_ISDATE(p.field1)
select p;
票数 3
EN

Stack Overflow用户

发布于 2009-03-03 17:30:00

我认为在使用LINQ to SQL时没有映射到ISDATE的扩展方法。

如果您可以加载所有数据,然后在客户端空间中进行过滤,那么在字段上使用TryParse并与日期进行比较。

否则,我将创建一个存储过程,它将返回您需要的数据(以便您可以使用ISDATE),然后通过上下文执行该存储过程。

此外,您使用ISDATE的语法也不正确。ISDATE只会告诉您表达式是否为有效的日期格式。您的查询将如下所示:

代码语言:javascript
复制
var query = SomeDataContext;
    query = from p in query
    where ISDATE(field1) != 0 && CONVERT(datetime, field1) > some date
    select p;

语法无效,但它可以让您了解如何形成查询。

票数 2
EN

Stack Overflow用户

发布于 2009-03-03 17:56:36

看起来你能做到。链接:

http://msdn.microsoft.com/en-us/library/bb386973.aspx

这可能会有帮助,但我还没有看过:

http://mtaulty.com/videos/nuggets/l2s/15_mt_l2s_callingsqlfunctions.wmv

完整列表如下:

http://mtaulty.com/CommunityServer/blogs/mike_taultys_blog/archive/2007/05/10/9322.aspx

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/607312

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档