在oracle中将身份证号转换成日期格式sql

Convert ID number into date format in oracle sql

我将 ID 存储在 table TEMP_SDR_RECEIVED 中的 ID 列中,它具有以下值: 201505264865645884。年、月、日以这种 ID 格式存储在前 8 个数字中。我想从此 ID 中提取年、月、日,并想将分、时、秒设置为 00:00:00 并将其他值设置为 ID_DATE 列中的空值,这是日期数据类型。所以 ID 到日期格式的转换应该是这样的:26.05.15 00:00:00 我正在尝试执行以下查询但出现错误,因为小时必须在 1 到 23 之间。 这是我的查询:

Insert into TEMP_SDR_RECEIVED(ID_DATE)
    Select to_date(substr(ID, 1, 14), 'YYYYMMDDHH24MISS') FROM TEMP_SDR_RECEIVED

你只需要前 8 个字符:

Insert into TEMP_SDR_RECEIVED(ID_DATE)
Select to_date(substr(ID, 1, 8), 'YYYYMMDD') FROM TEMP_SDR_RECEIVED

参见SQLFiddle

默认情况下,小时/分钟/秒将设置为 0