我正在尝试使用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(你可以看到),所以这件事真的很烦我
答案 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,请提交评论。