sql-server - 默认日期时间值应该是多少?

标签 sql-server datetime type-conversion

我在 c# 中的 DataTable 中插入 Excel 工作表记录,并将此 DataTable 传递给 SQL 存储过程。在我的 c# 代码中,我对 Excel 工作表的 empty 数据单元格进行了某些检查以避免异常。但似乎我在为我的 SQL Date 字段提供 default 值时遗漏了一些东西。

string InvoiceDate = (row.Cells[3].Text == " ") ? "0/00/0000 00:00:00 AM" : (row.Cells[3].Text);

我收到以下错误:

String was not recognized as a valid DateTime.Couldn't store <0/00/0000 00:00:00 AM> in InvoiceDate Column. Expected type is DateTime.

已编辑 - SQL字段声明[InvoiceDate]

[InvoiceDate] [date] NOT NULL

请不要建议插入 null,因为我无法为该列插入 null

最佳答案

首先,没有00/00/0000日期,在现实世界中不存在,在sql server中也不存在。

其次,为什么还需要默认值?只需使用 null 即可。

第三种,使用 ISO 8601 格式在字符串中指定日期 (yyyy-mm-ddThh:mm:ss)

第四,如Giorgi在他的评论中正确地指出,为什么还要使用字符串作为日期时间值?使用 DateTime 类型的变量在 c# 中。请注意,它的最小值不同于 sql server DateTime 数据类型的最小值。

如果您的 datetime列不可为空,您可以使用 1753-01-01(日期时间的最小值)或 9999-12-31(日期时间的最大值)

最后一件事,您可能要考虑使用 datetime2或者将日期和时间分隔到不同的列(当然是数据类型 datetime )。为什么? read here.

关于sql-server - 默认日期时间值应该是多少?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30754260/

相关文章:

sql - 带/不带游标的简单 SQL 过程

python - 格式化与python真正不一致的日期

pdf - Word Automation Service 断开目录中的链接

sql - 如何使用 Join(链接服务器)进行更新

sql-server - SQL统计组数

language-agnostic - 您将如何存储和查询营业时间?

c# - 如何在 C# 中将毫秒转换为日期格式?

javascript - 在javascript中比较字符串和整数

c++ - vector的构造函数中的size_type是什么意思?

mysql - 你能像在 SQL Server 中那样在 mySQL 中使用批处理 SQL 吗?