Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/296.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在WHERE子句中使用datetime执行查询_C#_Sql Server_Sql Server 2008_.nettiers - Fatal编程技术网

C# 在WHERE子句中使用datetime执行查询

C# 在WHERE子句中使用datetime执行查询,c#,sql-server,sql-server-2008,.nettiers,C#,Sql Server,Sql Server 2008,.nettiers,我使用SQLServer2008R2作为数据存储 到目前为止,在测试机上,我拥有该软件的英文版本,并用于将datetime字段格式化为 fromDate.ToString("MM/dd/yyyy"); 现在,我已经在另一台用意大利语编写的服务器上部署了数据库。我将把代码中的格式更改为 fromDate.ToString("dd/MM/yyyy"); 有没有一种方法可以使查询以中性格式进行 谢谢 编辑: 我忘了提到我正在使用CodeSmith的NetTiers。这是一个完整的样品 Appoin

我使用SQLServer2008R2作为数据存储

到目前为止,在测试机上,我拥有该软件的英文版本,并用于将datetime字段格式化为

fromDate.ToString("MM/dd/yyyy");
现在,我已经在另一台用意大利语编写的服务器上部署了数据库。我将把代码中的格式更改为

fromDate.ToString("dd/MM/yyyy");
有没有一种方法可以使查询以中性格式进行

谢谢

编辑

我忘了提到我正在使用CodeSmith的NetTiers。这是一个完整的样品

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);
AppointQueryAQ=新任命查询(true,true);
aq.附录大于(任命列.任命日期,fromDate.至字符串(“MM/dd/yyyy”);
aq.附录(任命栏.任命日期,toDate.ToString(“MM/dd/yyyy”);
AppointmentService aSvc=新的AppointmentService();
TList appointmentsList=aSvc.Find(aq);

就我个人而言,我总是使用
yyyy-MM-dd
。这也使得它可以作为字符串进行排序

但是,日期就是日期,日期就是日期。没有必要将日期更改为字符串。在.NET中,用户
DateTime

您应该共享用于执行查询的代码,但我猜您正在使用字符串concats动态构建SQL查询,以构建查询和参数。您应该使用参数化查询,这样就可以将数据作为日期对象传递,而无需转换为字符串

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

DateTime fromDate = DateTime.Now;

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

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

...
作为一个好的副作用,这将减少你的风险。 更新:在您的编辑之后,它确实显著地改变了问题的上下文,我必须承认我对.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); 
AppointQueryAQ=新任命查询(true,true);
aq.附录大于(任命栏.任命日期,起始日期);
aq.附录(任命栏.任命日期,toDate);
AppointmentService aSvc=新的AppointmentService();
TList appointmentsList=aSvc.Find(aq);
同时允许YYYY-MM-DD和YYYYMMDD。SQL Server识别ISO规范

虽然标准允许 用于的YYYY-MM-DD和YYYYMMDD格式 完整日历日期 陈述,如果日期[DD]为 仅省略YYYY-MM格式 是允许的。通过禁止 格式YYYYMM,标准避免 与被截断的 年/月/日(仍然经常 使用)


我更喜欢YYYYMMDD格式,但我认为这是因为我只知道它是从一开始的,而且对我来说,它似乎更通用,因为它去掉了可能被视为特定于语言环境的字符。

我认为
yyyy-MM-dd
(以及其他)是通用的。正如其他人所说,但值得重复,你真的不应该这么做。@ProfK:为什么我不应该?公平地说,@ProfK,他在你的编辑之前评论了这一点,这确实大大改变了问题的上下文。不,我没有使用字符串concats。有关更多详细信息,请参阅我的编辑。我忘了提到我使用的是来自NetTiers的强类型查询对象。thanks@Lorenzo,我更新了我的回复,以解决您在问题中提供的新信息,但这将问题带入了一种我没有使用过的技术,对此我在这里所说的话,恕我直言。不,我无法传递到各种append methods日期实例,因为它们只接受字符串参数。:)