我有一个vb.net网站,它有一个日期为ControlParameter的SQLDataSource。这在英国运行良好,但当在德国打开相同的页面时,由于日期格式不同,它会产生错误。
请参阅下面的示例代码
<asp:SqlDataSource ID="SQL" runat="server" ConnectionString="<%$ ConnectionStrings:xxxxxxxx %>"
SelectCommand="
SELECT *
from data
where
DATEADD(minute, time, date) > convert(datetime,@dt,104)
">
<SelectParameters>
<asp:ControlParameter ControlID="DateSelection" Name="dt" PropertyName="SelectedItem.text" />
</SelectParameters>
</asp:SqlDataSource>有没有人知道如何解决这个问题
谢谢
发布于 2014-01-17 06:42:01
我真的不理解您的SQL逻辑,所以假设逻辑是合理的,我怀疑主要原因是因为SelectedItem的输出被视为string。
因此,如果客户端PC的日期格式是"dd/MM/yyyy“,则值为"31/12/2014"的string可以被解释为2014年12月31日。
但是,如果客户端PC的日期格式是"MM/dd/yyyy“,则会出现错误,因为没有第31个月。
您可以尝试在后端设置SelectCommand,而不是在前端使用ControlParameter,这应该会让您在操作数据时有更大的自由度。
aspx页面:
<asp:SqlDataSource ID="SQL" runat="server" ConnectionString="<%$ ConnectionStrings:xxxxxxxx %>"
SelectCommand="" >
</asp:SqlDataSource>aspx.vb页面:
'assuming "SelectedItem" is a textbox
dim str As String = Convert.ToDateTime(SelectedItem.Text).ToString("dd MMM yyyy")
SQL.SelectCommand = "SELECT * from data where DATEADD(minute, time, date) > convert(datetime," + str + ",104)"我将日期转换为"dd MMM yyyy“格式的原因是,无论PC使用什么日期格式,”2014年12月31日“将始终被视为2014年12月31日。
https://stackoverflow.com/questions/20949977
复制相似问题