当我尝试导出此格式“2020-04-13 14:13:54”时,数据库导出失败
Database export fails when I try to export this format '2020-04-13 14:13:54'
当我尝试执行这个插入时
INSERT INTO BCS_EXPEDIENTES_REGISTRADOS (FOLIO, DOCUMENTO, FECHA_REGISTRO_DPS, CANT_PAGINAS)
VALUES ('24', 'Suc4437_X722INSURGEN_20200305033042.tiff', '2020-04-13 14:13:54', '79')
我收到一个错误:
The conversion of a varchar data type to a datetime data type resulted in an out-of-range value.
过程是:
- 我有一个值示例:04/13/2020 09:13:41
- 我将这个值转换成这种格式:=format([G_RECEPCION], "yyyy-MM-dd HH:mm:ss") 到 2020-04-13 14:13:54
- 但是当我执行
INSERT
时,它会抛出该错误。
对这个案例有什么想法吗?我需要在 SQL 服务器 yyyy-MM-dd HH:mm:ss
上以这种格式导出日期时间
让我先说 datetime has no concept of display format.
仅当我们讨论日期时间值的字符串表示形式时,显示格式才相关。
然后,让我们看看您使用的格式:yyyy-MM-dd HH:mm:ss
(称为 ODBC 规范)。
将此格式的字符串转换为 DateTime
时,转换结果取决于区域性。
这意味着当以某些语言(如英语)运行时 SQL 服务器将尝试使用 yyyy-MM-dd
作为日期,但在其他语言(如德语)中它将尝试使用 yyyy-dd-MM
作为日期.
这就是您收到转换错误的原因。
重要说明:除非您明确设置语言(或 DateFormat,就此而言),SQL服务器将使用登录的默认语言 - 因此一些用户转换可能会失败,而其他用户会成功。
另一个注意事项是 - 将此格式转换为 DateTime2
将始终被解释为 yyyy-MM-dd
.
因此,考虑到所有这些信息,您在这里有三个选择:
- 停止使用 DateTime,改用 DateTime2。
- 在处理日期时间值的字符串表示时,不要使用不安全的 ODBC 规范格式,而是使用安全的 ISO8601 格式:
yyyy-mm-ddThh:mi:ss.mmm
.
- 在插入语句之前显式 set language or date format(对 ymd)。
我建议结合前两个,如果可能避免使用第三个。
DateTime2
is a better data type than DateTime
, and ISO 8601 是通用标准,作为明确的日期时间格式在不同平台和语言中得到支持。
当我尝试执行这个插入时
INSERT INTO BCS_EXPEDIENTES_REGISTRADOS (FOLIO, DOCUMENTO, FECHA_REGISTRO_DPS, CANT_PAGINAS)
VALUES ('24', 'Suc4437_X722INSURGEN_20200305033042.tiff', '2020-04-13 14:13:54', '79')
我收到一个错误:
The conversion of a varchar data type to a datetime data type resulted in an out-of-range value.
过程是:
- 我有一个值示例:04/13/2020 09:13:41
- 我将这个值转换成这种格式:=format([G_RECEPCION], "yyyy-MM-dd HH:mm:ss") 到 2020-04-13 14:13:54
- 但是当我执行
INSERT
时,它会抛出该错误。
对这个案例有什么想法吗?我需要在 SQL 服务器 yyyy-MM-dd HH:mm:ss
上以这种格式导出日期时间让我先说 datetime has no concept of display format.
仅当我们讨论日期时间值的字符串表示形式时,显示格式才相关。
然后,让我们看看您使用的格式:yyyy-MM-dd HH:mm:ss
(称为 ODBC 规范)。
将此格式的字符串转换为 DateTime
时,转换结果取决于区域性。
这意味着当以某些语言(如英语)运行时 SQL 服务器将尝试使用 yyyy-MM-dd
作为日期,但在其他语言(如德语)中它将尝试使用 yyyy-dd-MM
作为日期.
这就是您收到转换错误的原因。
重要说明:除非您明确设置语言(或 DateFormat,就此而言),SQL服务器将使用登录的默认语言 - 因此一些用户转换可能会失败,而其他用户会成功。
另一个注意事项是 DateTime2
将始终被解释为 yyyy-MM-dd
.
因此,考虑到所有这些信息,您在这里有三个选择:
- 停止使用 DateTime,改用 DateTime2。
- 在处理日期时间值的字符串表示时,不要使用不安全的 ODBC 规范格式,而是使用安全的 ISO8601 格式:
yyyy-mm-ddThh:mi:ss.mmm
. - 在插入语句之前显式 set language or date format(对 ymd)。
我建议结合前两个,如果可能避免使用第三个。
DateTime2
is a better data type than DateTime
, and ISO 8601 是通用标准,作为明确的日期时间格式在不同平台和语言中得到支持。