我有一个文本框,显示日期为2011年5月1日,但数据库coumis格式为datetime ...如何在数据库的日期时间列中输入日期。 ..
如何为此获取sqlquery?
答案 0 :(得分:1)
您可以将该格式转换为类似这样的DateTime
string dateString = "01-May-2011";
string format = "dd-MMM-yyyy";
var result = DateTime.ParseExact(dateString, format, CultureInfo.InvariantCulture);
如果您使用的是LINQ to SQL,甚至ADO的参数类型为DateTime,则可以自动完成对SQL理解的格式的转换。
如果您通过手动连接字符串来构建SQL(不推荐!),您应该尝试重新转换为格式为'yyyyMMdddd'的字符串(根据AdaTheDev的注释进行更正,注意单引号)。 sql可能会识别或不识别其他格式,具体取决于客户端和SQL Server上的语言设置
答案 1 :(得分:0)
SQL Server非常适合接受日期时间值。如果您将日期作为参数传递,您可以在其周围加上引号('01 -May-2011')并忽略时间。数据库将自动填写默认时间,以便您不必担心它。
答案 2 :(得分:0)
将字段值作为nvarchar传递给数据库,并使用以下命令将其强制转换为日期时间。
Declare @dt nvarchar(20)
SET @dt = '01-May-2011'
select cast(@dt as datetime)
答案 3 :(得分:0)
只需将其转换为dateTime
即可DateTime _ConvertedDate = Convert.ToDateTime(txtDate.Text);
这会转换为日期时间
答案 4 :(得分:0)
有一点需要注意的是,没有时间的日期将被解释为2011年5月1日上午12点。 IE,没有指定时间,SQL Server将始终将时间设置为午夜。因此,如果您只将日期作为字段,并且您希望从5月1日开始记录,则无法执行
WHERE datefield = '5/1/2011'
这将找到日期字段为5月1日午夜的记录。你必须这样做
WHERE datefield >= '5/1/2011' and datefield < '5/2/2011'
这与你的问题无关,但我看到它绊倒了很多人。我自己也包括在内。