【发布时间】:2019-04-16 09:30:45
【问题描述】:
我在表格中有这一列 Startmonth,日期如下:YYYYMM,所以 201801、201707强>等
我希望在我的视图中创建此列,但转换为日期,例如 YYYY-MM-DD,将日期作为本月的第一天,所以 **201801 > 2018-01-01 和 201707 > 2017-07-01。 **
我不断收到错误:
从字符转换日期和/或时间时转换失败 字符串。
谁能帮帮我?
我试过这个:
select convert (DATE, concat (s.StartMonth,'01'), 102) as SubscriptionStart
from incident i
left join imcustomerid cid on i.accountid = cid.accountid
left join billing_subscription s on cid.imcustomerid = s.idcustomer
left join billing_subscriptiontype st on s.idsubscriptiontype = st.id
【问题讨论】:
-
你确定这是MySql吗?
-
当使用硬编码字符串而不是列(即“201811”)时,您的代码对我来说都很好,
102和112作为类型。 StartMonth 是什么类型的?它可以包含空格吗? -
注意,
date数据类型没有格式;日期(时间)数据类型存储为二进制表示。您的表示层选择显示日期的格式(例如,SSMS 对于大多数用户默认使用yyyy-MM-dd)。 -
@JoakimDanielson 不,没有空格。当我尝试使用 'from billing_subscription s' 转换它时(所以没有连接)它工作得很好,所以我不太明白为什么添加一些连接时它不起作用。
-
为
SELECT StartMonth FROM billing_subscription WHERE TRY_CONVERT(date, concat (StartMonth,'01')) IS NULL AND StartMonth IS NOT NULL;添加结果。我怀疑您的数据并非全部采用yyyyMM格式。
标签: sql sql-server