【发布时间】:2010-11-02 16:22:23
【问题描述】:
我有一个 sql server 2005 数据库和一个存储过程,它接受两个日期并对数据 @start_date_from 和 @start_date_to 进行一些比较,这两个数据都是 DATETIME 类型。
我们正在使用 LINQ 从我们的代码中调用存储过程,并将存储过程拖到 LINQ 表面上会生成一个方法调用,该方法调用接受可为空的日期时间。
我面临的问题是我们从用户界面输入的日期为 dd/MM/yyyy(我们在澳大利亚)并被解析为 C# DateTime。
一旦对存储过程的调用发生,它似乎会将其转换为美式日期。我正在寻找一种方法来防止这种情况发生,希望不必更改 proc 中参数的数据类型。
我曾尝试在 proc 中使用 SET DATEFORMAT dmy 但它似乎没有任何影响,我认为它必须需要 GO 或其他东西才能生效。
我正在考虑在存储过程中尝试一些时髦的格式化/转换/转换,但这似乎是最后的手段。
我想我也可以将输入参数更改为 varchars 并将日期设置为明确的格式。
在 proc 本身中,日期与 BETWEEN 关键字一起使用(如果这有什么不同的话)。
那么我应该选择哪些其他选项(或我已经概述的哪些选项)?
【问题讨论】:
标签: c# linq datetime stored-procedures formatting