Sql server 如何在SQL Server上将日期时间结果转换为日期

Sql server 如何在SQL Server上将日期时间结果转换为日期,sql-server,date,Sql Server,Date,以下是返回DATETIME结果时不起作用的逻辑。任何帮助都将不胜感激。我已尝试将数据类型更改为DATETIME2,但不起作用 代码如下: DECLARE @CurrentDate DATE = '0001-01-01' SELECT DATEADD(QQ, DATEDIFF(QQ, 0, @CurrentDate), 0) AS FirstDayOfQuarter, DATEADD(QQ, DATEDIFF(QQ, -1, @CurrentDate), -1) AS LastD

以下是返回DATETIME结果时不起作用的逻辑。任何帮助都将不胜感激。我已尝试将数据类型更改为DATETIME2,但不起作用

代码如下:

DECLARE @CurrentDate DATE = '0001-01-01' 
SELECT DATEADD(QQ, DATEDIFF(QQ, 0, @CurrentDate), 0) AS FirstDayOfQuarter, 
       DATEADD(QQ, DATEDIFF(QQ, -1, @CurrentDate), -1) AS LastDayOfQuarter, 
       CONVERT(VARCHAR(10), DATEADD(WEEK, DATEDIFF(WEEK, 0, DATEADD(DAY, (6- 
       DATEPART(DAY, @CurrentDate)), @CurrentDate)),0),120) AS FirstMondayOftheMonth

日期数据类型可以处理从1582-10-15到9999-12-31的数据,您可以在这里尝试“0001-01-01”


详细信息取决于版本,但是选择CONVERT(date,getdate())可能是最好的方法(假设您在2008年或更高版本,此时您应该是这样)


显然,用需要转换的内容替换getdate()。

可能重复感谢您的回复。我刚读了你发送的链接,发现1582-10-15到9999-12-31实际上是给Informatica的。@A Hettinger谢谢你的回复。我使用的是SQL Server 2017,当我使用DATEDIFF和DATEADD函数返回DATETIME结果时,问题就出现了。您应该能够使用CONVERT包装每个DATEDIFF和DATEADD调用。