我有一个表,我想在其中将字符串转换为日期时间并插入.但是,我收到一个转换失败的错误

INSERT INTO CUSTOMERS_PURCHASE([PURCHASE_DATE], [PURCHASE_TIME], [PURCHASE_CITY]) 
SELECT CAST( '03-January-2023' AS DATETIME2) AS PURCHASE_DATE,  
[PURCHASE TIME] AS PURCHASED_TIME, [PURCHASE_CITY] FROM CUSTOMERS_INDIA

错误:从字符串转换日期和/或时间时转换失败.

我能得到一些关于如何解决这个问题的建议/帮助吗?我正在使用Microsoft SQL

推荐答案

try_convert()...如果转换失败,它将返回空值,而不是引发错误

Declare @YourTable Table ([ID] varchar(50),SomeCol varchar(50))  Insert Into @YourTable Values 
 (1,'03-january-2023')
,(2,'03 jan 2023')
,(3,'03 ZZZ 2023')
,(4,'Just a a string')
 

Select ID
      ,NewValue = try_convert(datetime,SomeCol)
 from @YourTable

Results

ID  NewValue
1   2023-01-03 00:00:00.000
2   2023-01-03 00:00:00.000
3   NULL
4   NULL

Sql相关问答推荐

SQL查询组类值在同一行中,并连接和排序其他值

无效和不匹配的计数

转换表中的数据

检索上一个星期四和上一个星期三

不同表达方式时的大小写

用于过滤嵌套对象或数组中的JSON数据的WHERE条件

如何隐藏聚合JSON数组元素的键

使用generate_series()时,LEFT联接缺少日期/间隔

PostgreSQL-按距离阈值挤压相邻行的性能

如何对 jsonb 中的字段执行求和,然后使用结果过滤查询的输出

如何根据 SQL Server 中 1 条语句中 SELECT 的结果进行 INSERT 或 UPDATE

标量子查询中的窗口函数不起作用

使用对 nvarchar 列的多个 LIKE 操作优化 SQL 查询

当该日期的至少两条记录具有相同的持续时间或至少一条记录的持续时间为 0 时,如何标记该日期的所有记录

编写查询以根据级别 (p2) 返回父位置

以 15 分钟为间隔的使用情况SQL 查询

如何计算每行出现的次数并显示在另一个表中?

我现在如何显示重复的汽车? postgresql

如何优化sql请求?

Snowflake SQL group-by 的行为不同,具体取决于列是按位置引用还是按别名引用