过滤DateTime字段,现在作为WHERE子句中的引用

时间:2013-09-17 18:44:31

标签: sql vb.net datetime where-clause

我正在尝试使用where子句构建一个vb.net应用程序,以使用DateTime字段过滤数据。

我的表包含5个字段和超过10000行。我想使用DateTime字段来查找从现在开始超过7年的所有行。 但是这个脚本将被重复使用多次。所以我不想使用这种where子句因为我不想每次运行应用程序时都需要修改where子句:

select * from myTable WHERE myDateTimeField < '2006-09-07 00:00:00.000'

我想找到一种方法来编写这样的where子句:

select * from myTable WHERE myDateTimeField "is older than 7 years from NOW

我不经常使用VB.net(你可以看到),所以这件事真的很烦我

4 个答案:

答案 0 :(得分:0)

只需使用DateTime

Dim dateTime As DateTime
dateTime = DateTime.Now.AddYears(-7);

当您构建SQL字符串时,只需在您的日期调用ToString(显然您可以根据需要对其进行格式化):

dateTime.ToString("MM/dd/yyyy");

答案 1 :(得分:0)

我认为如果你有SQL Server

,会更好
strQuery = "select * from myTable WHERE myDateTimeField 
            <= DATEADD(YEAR, -7, GETDATE())"

答案 2 :(得分:0)

SELECT * FROM myTable WHERE myDateTimeField < DATEADD(YEAR, -7, GETDATE())

即如果myDateTimeField中的数据与sql server的 local 时区相同。

如果您的数据是UTC(通常应该是UTC),请使用:

SELECT * FROM myTable WHERE myDateTimeField < DATEADD(YEAR, -7, GETUTCDATE())

答案 3 :(得分:0)

您正在寻找的是适用于日期时间的DSL。查看此博客文章以获得一些想法。

http://leecampbell.blogspot.com/2008/11/how-c-30-helps-you-with-creating-dsl.html

祝你好运

P.S。

如果您需要帮助将其翻译成vb.net,请提交评论。