C# 将日期插入Microsoft Access数据库
如何编写正确的语法将日期插入数据库 这是我已经尝试过的SQL命令:C# 将日期插入Microsoft Access数据库,c#,sql,ms-access,C#,Sql,Ms Access,如何编写正确的语法将日期插入数据库 这是我已经尝试过的SQL命令: "insert into table1 (date) values (#"+DateTime.Parse(DateTime.Now.ToShortDateString())+"#)" 以及: "insert into table1 (date) values ('"+DateTime.Parse(DateTime.Now.ToShortDateString())+"')" 我确信我可以在Stackoverflow上找到这个问
"insert into table1 (date) values (#"+DateTime.Parse(DateTime.Now.ToShortDateString())+"#)"
以及:
"insert into table1 (date) values ('"+DateTime.Parse(DateTime.Now.ToShortDateString())+"')"
我确信我可以在Stackoverflow上找到这个问题的副本,但事实证明,我发现的许多关于C#和Access SQL的日期格式的问题都有其特殊的奇怪问题,没有直接的答案。但是,从技术上来说,答案仍然存在于其他问答中,如果您只需查看各种代码示例中字符串的格式
- 这里的目的是构建一个SQL字符串。两个非工作示例都在调用
方法,该方法返回一个DateTime值。。。它不是字符串数据类型DateTime.Parse()
- 给定的代码正在进行完整的循环。方法
返回日期时间类型。但是DateTime.Now
方法将其转换为字符串。但是,ToSortDateString()
函数会将该字符串转换回日期,基本上会撤消已有的内容Parse()
这个故事的寓意是什么?删除对DataTime.Parse()的调用
必须为日期表达式使用正确的字符串表达式,或使用日期() 对于其他日期值:
"insert into table1 ([date]) values (#" + someDate.ToString("yyyy'/'MM'/'dd") + "#)"
如果数据库已经是日期,为什么要将日期转换为字符串?@jdweng因为在我的数据库中,我将日期格式更改为shortdate格式。这不是我需要的只是syntex来插入date@crank你说其他评论“不是重点”,但他们认识到,对给定代码的每一部分都有误解。如果您了解了Parse和ToSortDateString所做工作的更详细信息,您可能会理解语法不正确的原因。我的回答不仅仅是语法,而且希望能够描述为什么其他代码不正确。我希望这对你有多方面的帮助。你是说小约会吗?它仍然是一个数字,而不是精度为1分钟的字符串。@crank您没有共享实际代码,因此我无法在这方面帮助您。我共享的代码应该生成一个有效字符串。也许您的区域设置正在将日期格式化为不兼容的字符串,以便Access正确解释。由您调试代码的每一部分并查看它产生了什么。Gustav的代码还演示了一个很好的观点:您应该避免使用保留字作为列名
date
是一个VBA函数,因此除非像[date]
那样包装它,否则也可能会导致错误。
"insert into table1 ([date]) values (Date())"
"insert into table1 ([date]) values (#" + someDate.ToString("yyyy'/'MM'/'dd") + "#)"