繁体   English   中英

如何将varchar转换为日期格式

[英]How to convert varchar to date format

我想将我的字段(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

您可以串联丢失的01

SELECT CONVERT(date, '01/'+dateVar, 103)
FROM tab

DBFiddle演示

为了避免用户输入不正确的问题,可以使用TRY_CONVERT 如果发生转换错误,它将返回NULL

您应该对日期使用标准格式:

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显示您希望看到的值。

技巧只是将字符串转换为YYYYMMDD格式并将其强制转换。

cast(right(dateVar,4) + left(dateVar,2) + '01' as date) 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM