【发布时间】:2021-09-14 19:53:51
【问题描述】:
我创建了具有以下结构的表。
CREATE TABLE TEMP_CUSTOMERS
(
CUSTOMER_NAME VARCHAR(255) NOT NULL,
CUSTOMER_ID VARCHAR(18) NOT NULL,
CUSTOMER_OPEN_DATE DATE NOT NULL,
LAST_CUNSULTED_DATE DATE,
VACCINATION_TYPE CHAR(5),
DOCTOR_CONSULTED CHAR(5),
STATE CHAR(5),
COUNTRY CHAR(5),
POST_CODE INT,
DATE_OF_BIRTH DATE,
ACTIVE_CUSTOMER CHAR(1)
)
我想插入以下值
INSERT INTO TEMP_CUSTOMERS (CUSTOMER_NAME, CUSTOMER_ID,
CUSTOMER_OPEN_DATE, LAST_CUNSULTED_DATE,
VACCINATION_TYPE, DOCTOR_CONSULTED,
STATE, COUNTRY, DATE_OF_BIRTH, ACTIVE_CUSTOMER)
VALUES ('ALEX', '123457', '20101012', '20121013', 'MVD', 'PAUL', 'SA', 'USA', '06031987', 'A'),
('JOHN', '123458', '20101012', '20121013', 'MVD', NULL, 'TN', 'IND', '06031987', 'A'),
('MATHEW', '123459', '20101012', '20121013', 'MVD', NULL, 'WAS', 'PHIL', '06031987', 'A'),
('MATT', '12345', '20101012', '20121013', 'MVD', NULL, 'BOS', 'NYC', '06031987', 'A'),
('JACOB', '1256', '20101012', '20121013', 'MVD', NULL, 'VIC', 'AU', '6031987', 'A')
但是在将 06031987 值插入 DATE_OF_BIRTH 列时出现错误。我尝试了转换、投射、设置日期格式……但没有成功。
请帮帮我。
【问题讨论】:
-
不要使用那种格式,使用
yyyyMMdd,这是明确的。 -
为了呼应拉努,我什至不知道那是 6 月 3 日还是 3 月 6 日,除了你的问题标题是
ddmmyyyy。这不是一种有效的格式 - 修复源以使用正确的、明确的、非区域格式。 -
您的其他日期显然使用了不同的格式。甚至可能是正确的格式。那么,到底为什么你还试图接受不同的(无意义的)dob 格式?无论提供或预处理此数据的任何内容都需要修复。
-
我也希望
6031987是一个与您的问题无关的错字。如果你被垃圾卡住了,但甚至不能依赖源来提供一致垃圾,我认为你不能围绕这个编写可靠的代码。 -
由于您在 DATE_OF_BIRTH 列中遇到了一些垃圾,如果它是一致的垃圾并且始终以 DDMMYYYY 格式出现,那么请查看 Venkataraman R 发布的解决方案(带有 DATEFROMPARTS 的解决方案。我必须不过告诉你,你发布的生日都是美国人的,这里的很多人都使用 MMDDYYYY 格式。你真的需要确定。找一个 DD 或 MM 超过 12 岁的人。实际上会将该列定义为 DD 列。
标签: sql sql-server tsql