无论文化如何,强制日期格式

Force date format regardless of culture

我对某些文化(尤其是西班牙语)有疑问,导致日期字符串 ToS​​hortDateString() 以 dd/mm/yyyy

的形式出现
where END_DATE between '" + asOfDate.AddDays(-30).ToShortDateString() + "' and '" +

这导致 SQL 服务器错误,因为我们得到了不正确的日期文字字符串,例如:

where END_DATE between '17/05/2015' and '16/06/2015' 

在我构建 SQL 语句的这些情况下,将日期格式强制为 mm/dd/yyyy 的最佳方法是什么?

答案是,如果您要使用 any 格式,请确保它是 ISO 类型的格式,例如 yyyy-MM-dd.

where END_DATE between '" + asOfDate.AddDays(-30).ToString("yyyy-MM-dd") + "' and

然而,更重要的一点是使用参数化查询,而不是字符串连接。当您这样做时,日期就是日期,格式无关紧要。

您可以使用:

asOfDate.AddDays(-30).ToString("MM/dd/yyyy", System.Globalization.CultureInfo.InvariantCulture)

(注意大写MM)