SQL Server:从不同的数据类型插入到另一种数据类型

时间:2018-10-16 18:40:37

标签: sql-server

好吧,我有一个表,其列类型为日期,并且我将值插入到该列中

Concat(year(getdate()),'-','0',month(getdate()), '-', '01'),

它按预期工作,但现在抛出此错误

  Conversion failed when converting date and/or time from character string.

当我检查时,convert函数将输出作为varbinary提供,还有其他方法可以实现吗?

我已经尝试过使用convert或cast,遇到同样的问题

cast(Concat(year(getdate()),'-','0',month(getdate()), '-', '01') as date)

3 个答案:

答案 0 :(得分:0)

您需要本月的第一天,而无需将其转换为可能导致错误的字符串。

select cast(DATEADD(month, DATEDIFF(month, 0, getdate()), 0) as date)

在您的代码中,您会注意到输出给出2018-010-01,而额外的0将在最近三个月内发生。

要显示如何使用您的方法执行此操作,只需删除0。

select 
    cast(Concat( year(getdate()),
            '-',
            month(getdate()),
            '-', 
            '01') as date)

答案 1 :(得分:0)

从您的查询中删除'0'

像这样使用

select cast(Concat(year(getdate()),'-',month(getdate()), '-', '01') as datetime)

答案 2 :(得分:0)

尝试一下:

SELECT DATEFROMPARTS(YEAR(getDate()), MONTH(getDate()) , 1)