尝试将我的日期转换为其他格式但遇到问题。
目前,我的日期列如下:
YearBuilt
1934-01-01 00:00:00:0000
1981-01-01 00:00:00:0000
我想拥有它:
YearBuilt
01/01/1934 00:00:00:0000
01/01/1981 00:00:00:0000
我试过
update table set YearBuilt = '01/01/' + YearBuilt
但是得到错误:
Msg 241, Level 16, State 1, Line 1
Conversion failed when converting date and/or time from character string.
但是我的YearBuilt列已经是一个日期时间数据类型,所以我不确定它正在尝试转换哪个字符串。
任何意见都将深表感谢!
答案 0 :(得分:2)
日期/时间以内部格式存储在SQL中。这是一件好事!您应该在输出中指定格式。也就是说,你可以这样做:
select '01/01/' + datename(year, YearBuilt)
您可以将其构建到表格中:
alter table t add YearBuilt_str as ('01/01/' + datename(year, YearBuilt))
然后只需使用字符串版本即可获得替代格式。
答案 1 :(得分:0)
试试这个:
DECLARE @D DateTime = '2017-11-01 00:00:00:000';
SELECT @D AS Input,
CONVERT(VARCHAR(50) , @D, 101) +
SUBSTRING(CONVERT(VARCHAR(50), @D, 113), 12, LEN(CONVERT(VARCHAR(30), @D, 113))) AS OutPut;
结果:
+---------------------+------------------------+
| Input | OutPut |
+---------------------+------------------------+
| 01.11.2017 00:00:00 | 1/11/2017 00:00:00:000 |
+---------------------+------------------------+
答案 2 :(得分:0)
如果您的列具有Date Time
数据类型,则无法使用自定义日期格式更新日期。
但是,您可以通过SQL
查询
SELECT '01/01/'+CONVERT(VARCHAR(4), YEAR(YearBuilt))+' '+CONVERT(VARCHAR(MAX), CAST(YearBuilt AS TIME)) [YearBuilt]
FROM <table_name>;
结果:
YearBuilt
01/01/1934 00:00:00.0000000
01/01/1981 00:00:00.0000000