我有一个日期时间类型的变量。如何将shortdatetostring()作为datetime变量类型?我在databae中有一个列作为datetime类型。我想获得在某一天添加的记录。
示例:
SELECT id FROM database WHERE added like @p1
查询的参数是日期时间变量。
答案 0 :(得分:1)
你可以做一些这样的事情,以便在1月26日获得所有的ID。
SELECT id FROM database WHERE added >= '2012-01-26' and added < '2012-01-27'
答案 1 :(得分:1)
根据日期变量的日,月和年匹配。不要使用字符串,因为匹配很慢。
SELECT id
FROM database
WHERE Datepart(yy, added) = Datepart(yy, @p1)
AND Datepart(mm, added) = Datepart(mm, @p1)
AND Datepart(dd, added) = Datepart(dd, @p1)
答案 2 :(得分:0)
在C#中你喜欢以下。
DateTime dt;
string Temp1 = "Your Date";
if (DateTime.TryParse(Temp1, out dt))
{
// If it is a valid date
string date = dt.ToShortDateString();
string time = dt.ToShortTimeString();
}
在SQL Server中
SELECT id FROM database WHERE Datepart(dd, added) = Datepart(dd, @p1)
请参阅下面的示例
create table #temp
(
dat datetime,
)
insert into #temp(dat)values(GETDATE())
insert into #temp(dat)values(GETDATE()+1)
insert into #temp(dat)values(GETDATE()+2)
select * from #temp where DATEPART(dd, dat) > 27
drop table #temp
答案 3 :(得分:0)
如果使用参数化查询,则日期时间类型的格式无关紧要。 要记住“2012-01-26”是一个字符串而不是日期......
如果你需要一个特定方式格式化的日期,那么myDateTime.ToString(....),有几个重载,其中一个只是格式字符串,例如“YYYY-MM-DD”
如果要将字符串解析为日期时间,然后再解析DateTime.Parse(...),则会有多次重载。
评论后的日期更多
DateTime.Parse(“12/31/2012”)为您提供c#中的日期时间类型。 它将字符串解析为DateTime
MyDateTime.ToString(“MM / dd / yyyy”)为您提供指定格式的日期字符串。
“31/12/2012”不是日期,如果您希望将其作为日期,则将其解析为一个日期。
现在,您希望将DateTime转换为字符串,将字符串转换为DateTime,还是要求完全不同的东西?
如果您只想使用格式为mm / dd / yyyy的Parse DateTimes,那么你不能这样做,因为当它是字符串的时候,从6月8日起绝对没有办法告诉8月6日,除非你假设格式总是mm / dd / yyyy,这几乎可以保证在某些时候出现严重错误,这就是为什么从Date转到字符串YYYYMMDD或YYYY-MM-DD是要走的路。
如果这是您想要/必须做的事情那么
DateTime MyDateTime = DateTime.Parse("12/31/2012",CultureInfo.CurrentCulture);
以不符合模式的格式传递字符串,它将引发异常,NB将包括“31/12/2012”。
CultureInfo位于System.Globalisation命名空间中。
有区域数量的选项。 Current,CurrentUI,Invariant等您使用哪一个取决于您的设置和全球化/国际化要求(即使它们都没有)。因此,使用Current Culture,将采用美国默认区域设置。但是,如果我要运行您的代码,那么“31/12/2012”将起作用,“12/31/2012”将会破坏大块。
如果您想要修改格式,无论它们运行在哪个系统上,那么InvariantCulture就是您的选择。不要忘记设置中性语言。点击项目属性页面的Applications选项卡上的程序集按钮。中性语言是一个接近底部的下降。大概你想要我们。
如果你不想要这种情况,那就是
DateTime myDateTime;
if (DateTime.TryParse("12/31/2012",CultureInfo.CurrentCulture, out myDateTime)
{
// do something with myDateTime...
}
else
{
// do something about the value not being in the correct format
}
答案 4 :(得分:0)
实际上,您可以通过编辑查询来简化此操作。试试
select id from database where cast(added as date) = cast(@p1 as date)
这(有效地)从added
和@p1
的时间中删除时间,并仅比较日期。