我使用SQL Server 2008 R2作为数据存储。

到现在为止在测试机上我有软件的英文版本,并用来做查询格式化日期时间字段为

fromDate.ToString("MM/dd/yyyy");

现在我已经部署另一服务器这是在意大利语言上的数据库。我将在我的代码格式改为

fromDate.ToString("dd/MM/yyyy");

有没有一种方法,使查询在一个中立的格式?

谢谢!

修改

我忘了提及,我使用NetTiers与CodeSmith中。下面是一个完整样品

AppointmentQuery aq = new AppointmentQuery(true, true);
aq.AppendGreaterThan(AppointmentColumn.AppointmentDate, fromDate.ToString("MM/dd/yyyy"));
aq.AppendLessThan(AppointmentColumn.AppointmentDate, toDate.ToString("MM/dd/yyyy"));
AppointmentService aSvc = new AppointmentService();
TList<Appointment> appointmentsList = aSvc.Find(aq);
有帮助吗?

解决方案

ISO 8601的数据元素和交换格式 - 信息交换 - 表示日期和时间<的/ EM > 允许两者YYYY-MM-DD和YYYYMMDD。 SQL Server识别的ISO规格。

  

虽然标准允许两个   YYYY-MM-DD和YYYYMMDD格式   完整的日历日期   表示,如果天[日]是   然后省略仅YYYY-MM格式   被允许。通过禁止的日期   形式YYYYMM,标准避免   与截断混乱   表示YYMMDD(仍然经常   使用)。

我喜欢YYYYMMDD格式,但我想这是因为我只知道有关入手,对我似乎更普遍,已经有可能被认为是区域特定的字符做了。

其他提示

<击> 你应该分享您使用的是执行查询的代码,但我猜你是动态生成SQL查询字符串使用到concats构建查询和参数。你还是使用参数化查询,则可以通过数据作为一个Date对象,并没有必要converto的字符串。

<击>

例如,如果您的查询可能是这样

DateTime fromDate = DateTime.Now;

SqlCommand cmd = new SqlCommand(
  "select * from Orders where fromDT = @fromDate", con);

cmd.Parameters.AddWithValue("@fromDate", fromDate);

...

<击>作为一个良好的副作用,这会降低你的 SQL注入 更新:您编辑的不显著变化问题方面,我不得不承认,我有.netTiers项目的零知识后。但是,只是出于好奇你有没有尝试过直接传递日期的实例如下面的?

AppointmentQuery aq = new AppointmentQuery(true, true); 
aq.AppendGreaterThan(AppointmentColumn.AppointmentDate, fromDate); 
aq.AppendLessThan(AppointmentColumn.AppointmentDate, toDate); 
AppointmentService aSvc = new AppointmentService(); 
TList<Appointment> appointmentsList = aSvc.Find(aq); 

我个人始终使用yyyy-MM-dd。这也使得它可排序为字符串。

然而,日期是一个日期是日期。有没有必要将日期更改为字符串。在.NET中,用户DateTime

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top