我有这个数据,它在一个varchar(7)
列中,我想将其转换为DateTime
列。
我有一个select语句,我将其拆分为月份、年份,并将日期设置为1。但是我在将这些数据插入LogDate [datetime]
时遇到了困难。我尝试使用CONCAT进行选择,但出现了语法错误。是否有其他方法可以完成这个任务?
表格设置
CREATE TABLE LogData
(
LogMonth [varchar](7) NOT NULL,
LogDate [datetime] NULL
);
INSERT INTO LogData ([LogMonth])
VALUES ('01/2023');
INSERT INTO LogData ([LogMonth])
VALUES ('02/2023');
INSERT INTO LogData ([LogMonth])
VALUES ('03/2023');
插入
SELECT
REVERSE(PARSENAME(REPLACE(REVERSE(LogMonth), '/', '.'), 1)) AS [Month],
REVERSE(PARSENAME(REPLACE(REVERSE(LogMonth), '/', '.'), 2)) AS [Year],
[Day] = 1
FROM
LogData
这是我尝试过的:
INSERT INTO LogData (LogDate)
SELECT
CONCAT(REVERSE(PARSENAME(REPLACE(REVERSE(LogMonth), '/', '.'), 1)) AS [Month],
REVERSE(PARSENAME(REPLACE(REVERSE(LogMonth), '/', '.'), 2)) AS [Year],
[Day] = 1)
示例
'03/2023'
不正确,因为它只有两个部分。03/2023是什么日期?01/03/2023?31/03/2023?15/03/2023 12:00:00?还是其他日期? - Thom A'03/2023'
不是有效的日期,因为它只有两个部分。那么03/2023是什么日期呢?是01/03/2023吗?还是31/03/2023?或者是15/03/2023 12:00:00?还是其他日期? - Thom APARSENAME
函数,因为字符串中的yyyy和mm在固定位置上。 - Martin Smith