将字符串转换为有效的MS SQL日期时间,以便在数据库中搜索
本文关键字:数据库 搜索 时间 日期 转换 字符串 有效 SQL MS | 更新日期: 2023-09-27 18:14:52
我看到了很多答案,其中大部分包括使用DateTime.ParseExact
和"CultureInfo "。但它对我不起作用,我不确定这些答案是否100%与我需要解决的问题相关。
我有一个表,记录来自数据库。用户可以根据不同的条件执行搜索,其中一个条件是日期。我使用了一些继承的jQuery日历,在我的控制器中,来自日期文件的数据格式为"dd/mm/yyyy hh:mm:ss"
。我希望能够使用这些信息来执行搜索数据库中的记录在同一日期。一个问题是,我想只使用日期而不是时间,但我不确定以什么顺序来解决这个问题,所以我决定将传入字符串转换为有效的MS SQL datetime,看看会发生什么,并考虑时间。
我尝试了不同的东西,这是我最后一次,之后我决定在这里发布:
if (!String.IsNullOrEmpty(selDate))
{
CultureInfo myCItrad = new CultureInfo("bg-BG", false);
DateTime parsedDate = DateTime.ParseExact(
selDate,
"dd.MM.yyyy hh:mm:ss",
myCItrad);
model = model.Where(m => m.Date == parsedDate);
}
当我解析selDate字符串不包含它们时,它是- "23/05/2013 09:04:45"
如果您的输入字符串看起来像"23/05/2013 09:04:45"
,那么您应该对ParseExact
使用此模式:"dd/MM/yyyy hh:mm:ss"
if (!String.IsNullOrEmpty(selDate))
{
CultureInfo myCItrad = new CultureInfo("bg-BG", false);
DateTime parsedDate = DateTime.ParseExact(
selDate,
"dd/MM/yyyy hh:mm:ss",
myCItrad);
model = model.Where(m => m.Date == parsedDate);
}
leon,
应用程序和SQL之间的日期问题众所周知。
- SQL和。net日期时间类型不同:http://msdn.microsoft.com/en-us/library/system.data.sqltypes.sqldatetime.aspx 在SQL和。net中都有许多日期时间格式,它们都需要被视为数字类型。
因此,您需要知道如何在。net端转换各种日期时间格式,将其转换为SQL类型,反之亦然。这不是一个好的做法…
- 使用SqlDateTime进行转换。或者: 一个简单的,有点"肮脏"的解决方案是这样的:
- 取用户想要的日期。计算它是从多少天开始的当前(例如--> int days = (DateTime.Now-selectDate). days;
- 现在在数据库查询中,使用SQL: GetDate()-days
唯一的问题是我只想使用日期而不是时间,
这与SQL日期格式无关。
如果你想只使用日期而不使用时间,你可以这样做:
model = model.Where(m => m.Date.Date == parsedDate.Date);
或者
model = model.Where(m => (m.Date >= parsedDate.Date && m.Date < parsedDate.Date.AddDays(1));
在上面的m.Date.Date
和parsedDate.Date
中,您使用DateTime.Date
属性来获取日期值的日期组件,丢弃时间组件。
DateTime在SQL中的格式为yyyy-MM-dd HH:mm:ss。正确的代码是
DateTime parsedDate = DateTime.ParseExact(selDate, "yyyy-MM-dd" myCItrad);