sql-server - 从字符串 yyyy-mm-dd HH:mm:ss.fff 更新 DateTime 字段会导致错误
问题描述
我正在尝试从 yyyy-mm-dd HH:mm:ss.fff 类型的字符串更新日期时间字段,但没有成功:
UPDATE MyTable
SET MyDateTimeField = CAST('2021-02-20 00:00:00.000' AS DATETIME)
WHERE MyCondition
以下是我得到的错误:
将 varchar 数据类型转换为 datetime 数据类型导致值超出范围
解决方案
不要那样写日期时间值。它们对所有设置都不安全。改为这样做:
UPDATE MyTable
SET MyDateTimeField = '20210220'
WHERE MyCondition';
这适用于所有区域设置和所有与日期相关的数据类型。我还假设您不想要时间组件。如果这样做,请使用以下格式:
UPDATE MyTable
SET MyDateTimeField = '20210220 23:10:15'
WHERE MyCondition;
唯一安全的其他选项是完整的 ISO8601T 格式(但必须包括 T 部分)。
推荐阅读
- rest - 具有操作性能评估的 Apache Superset 孵化器超集日志注入
- javascript - 本机 node.js 和浏览器加密的同构代码
- python - PyArrow:mmap 支持的直通数组?
- python-3.x - Visual Studio 2019 python 工作区设置
- javascript - 获取对象数组中 javascript 对象的键名
- google-admin-sdk - 我找不到某些类型的管理员审核活动事件
- javascript - 是否可以在 C# 中计算 Bing Maps Route,然后使用 MvC 将其传递给 Javascript 中的 Map?
- docker - 尝试在本地安装 Shopware 6 时,Docker for Windows “系统找不到指定的路径”
- python-3.x - 在 Python 中为 3 个 ETF(EWA、EWC、IGE)实施协整投资组合
- swift - 在 SwiftUI 中使用三元运算符会导致类型不匹配错误,为什么?