【问题标题】:How to search by year when using datetime使用日期时间时如何按年份搜索
【发布时间】:2013-03-01 05:35:36
【问题描述】:

我在 Visual Studio 2008 中有一个程序。
一切正常,除了我无法按日期搜索我的datagridview
我需要能够输入年份,然后将显示具有该年份的每条记录。
我使用 tableadapter 添加了搜索 buttons 按姓名和姓氏进行搜索,但是当我对日期执行相同操作时,它显示“没有为一个或多个必需参数提供值”。
我使用datetime picker 来获取日期的值。

我试过的代码是

SELECT        
  memberno, firstname, middlename, lastname, gender, emailadd, address, phone, datejoined
FROM
  Members
WHERE        
 (DATEPART(y, datejoined) = ?)

【问题讨论】:

    标签: asp.net sql-server-2008 search datetime


    【解决方案1】:

    你可以使用datediff函数如下

      SELECT DATEDIFF(year, '2005-12-31 23:59:59.9999999', '2006-01-01 00:00:00.0000000');
    

    组合起来

     SELECT 
          memberno, firstname, middlename, lastname, gender, 
          emailadd, address, phone, datejoined 
     FROM 
         Members 
     WHERE 
        DATEDIFF(year, '2005-12-31 23:59:59.9999999', yourdate)=0;
    

    编辑 1

    如果您从文本框(您要搜索的年份)中获取值,那么您可以这样做

     SELECT 
          memberno, firstname, middlename, lastname, gender, 
          emailadd, address, phone, datejoined 
     FROM 
         Members 
     WHERE 
        DATEDIFF(year, datejoined, textboxvalue)=0;
    

    编辑 2

      int Year=Int32.Prase(textbox1.text);     
      var date1 = new DateTime(Year, 1, 1, 4, 5, 6);
      var date2=new DateTime(year+1,1,1,4,5,6);
    
      date >= date1 and < date2
    

    【讨论】:

    • 那么我应该把第一个和第二个代码放在哪里呢?我使用 tableadapter,所以代码只是放在查询构建器中并成为工具条按钮。我需要能够询问用户他/她想要搜索的年份。
    • 哦!谢谢。我会试试看。 :)
    • 不幸的是,它没有用。它显示相同的消息“没有为一个或多个必需参数提供值”。代码中的 textboxvalue 是什么?我只是按原样输入它并没有用。我真的很需要你的帮助。在此先感谢!
    • 你一年在文本框中输入了什么?比如2013等?
    • 是的。当我像其他人一样添加查询时,它应该自动有一个文本框。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-09-08
    • 2013-12-22
    • 1970-01-01
    • 2022-11-16
    • 1970-01-01
    • 2014-07-23
    • 2021-10-15
    相关资源
    最近更新 更多