使用SelectParameters将日期和时间转换为MS SQL选择查询

时间:2009-05-29 11:14:15

标签: sql-server vb.net datetime formatting

我遇到这种情况,我有一个SqlDatasource控件,而select查询就像:

SELECT col1, col2 FROM table1 WHERE colDate = @date

@date的来源是一个标签,文字为:2009-05-29 12:06:00 运行查询时出现以下错误:

  

转换日期时转换失败   和/或来自字符串的时间

我尝试使用convert(datetime,@ date),以及标签本身的不同日期/时间格式。每次我收到错误。

但是,当我在管理工作室中运行查询时:

    SELECT col1, col2 FROM table1 WHERE colDate = '2009-05-29 12:06:00'

它就像一个魅力!

有没有人知道我缺少什么?

编辑:

我发现@date被解析为05-29-2009 01:30:00 TT 我不知道TT来自哪里?我确定SQL Server无法处理它?<​​/ p>

3 个答案:

答案 0 :(得分:2)

请尝试:

SELECT col1, col2 FROM table1 WHERE colDate = convert(datetime, @date,120)

有关日期时间数据类型的可用转换格式的完整列表,请参阅以下SQL Server联机丛书参考:

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

答案 1 :(得分:2)

发现问题,我有一个Now.ToString(“MM / dd / yyyy hh:mm:ss TT”),它将双T添加到@date ...现在运行完美!

全部谢谢!

答案 2 :(得分:1)

您可以尝试

SELECT col1, col2 FROM table1 WHERE colDate = CONVERT(DATETIME, @date, 120)

尝试:

<SelectParameters>
  <asp:ControlParameter ControlID="label1" Name="date" PropertyName="Text" Type="DateTime" />
</SelectParameters>