即使我们分配了日期时间对象,

时间:2019-07-16 14:41:45

标签: sql sql-server

如何使T-SQL仅打印datetime对象中的日期部分?我尝试了101格式的转换,因为它同时打印时间也无法正常工作。

这是我正在谈论的代码:

DECLARE @ReceivedDate DATETIME = GETDATE()

SET @ReceivedDate = CONVERT(VARCHAR(10), CAST(RTRIM(@ReceivedDate) AS DATE), 101);
PRINT @ReceivedDate

3 个答案:

答案 0 :(得分:1)

更新:从问题更改开始。

要获取日期,只需执行以下操作:

SELECT CAST(GETDATE() AS DATE)

OR

declare @ReceivedDate datetime=getdate() 

DECLARE @Dateonly AS VARCHAR(50)

SET @DateOnly = Cast(@ReceivedDate as Date)

PRINT @DateOnly

原始问题的答案只是时间

您遇到了几个问题。
  1.您做错了转换以获取时间。

  1. 您已将转换保存回为日期/时间的变量,以便它将日期重新添加。

您需要修复转换并创建一个新变量(如下所示)以将转换结果放入或直接打印出转换。

declare @ReceivedDate datetime=getdate() 

DECLARE @TimeOnly AS VARCHAR(50)

SET @TimeOnly = CONVERT(varchar(10),@ReceivedDate, 108); 

PRINT @TimeOnly

答案 1 :(得分:1)

根据需要的格式使用以下内容:

SELECT CONVERT(VARCHAR(10), getdate(), 101);
Output: 07/16/2019

SELECT CONVERT(VARCHAR(10), getdate(), 105);
Output: 16-07-2019

SELECT CONVERT(VARCHAR(10), getdate(), 111);
Output: 2019/07/16

答案 2 :(得分:0)

您的代码是正确的问题是您正在将其分配回datetime变量并打印肯定带有时间戳的datetime变量。您应该在打印之前将其分配给字符串或日期变量

    declare @ReceivedDate datetime=getdate()
    SET @ReceivedDate = Convert(varchar(10),@ReceivedDate, 101);
    print @ReceivedDate
    print Convert(varchar(10),@ReceivedDate, 110);

输出

    Jul 16 2019 12:00AM
    07-16-2019