我想将我的字段(dateVar = '08 / 2018')转换为实际日期字段。实际上我只有几个月和几年,所以我只需要像一天一样添加01。 我的最终结果应该是2018-08-01。
CREATE TABLE dateTable (
dateVar varchar(10)
);
insert into dateTable (dateVar)
values('08/2018'),('01/2015');
我用它来转换为日期,但不起作用
SELECT CONVERT(date, dateVar, 103) FROM dateTable
答案 0 :(得分:3)
您可以串联丢失的01
:
SELECT CONVERT(date, '01/'+dateVar, 103)
FROM tab
为避免用户输入不正确的问题,可以使用TRY_CONVERT
。如果发生转换错误,它将返回NULL
。
答案 1 :(得分:2)
您应该对日期使用标准格式:
insert into dateTable (dateVar)
values('2018-08-01'), ('2015-01-01');
连字符是ISO标准和大多数数据库中的标准。它几乎总是可以在SQL Server中正常工作,但是真正的SQL Server标准删除了连字符-'20180801'
和'20150101'
。
然后应声明该表具有该列的日期:
CREATE TABLE dateTable (
dateVar date
);
如果需要以特定格式查看它,请使用计算变量:
CREATE TABLE dateTable (
dateVar date,
date_mmyyyy as (right(convert(varchar(10), dateVar, 103), 7))
);
然后date_mmyyyy
会显示您希望看到的值。
答案 2 :(得分:0)
技巧只是将字符串转换为YYYYMMDD格式并将其强制转换。
cast(right(dateVar,4) + left(dateVar,2) + '01' as date)