sql结束时间的当前日期

时间:2013-07-28 07:14:03

标签: sql-server tsql

我有这样的查询:

select cast(convert(varchar(10), getdate(), 110) as datetime)

这样就回来了:

currentdate
-----------------------
2013-07-28 00:00:00.000

但我希望获得结束时间的当前日期。我的预期输出是这样的:

currentdate
-----------------------
2013-07-28 23:59:59

4 个答案:

答案 0 :(得分:4)

那么,在这种情况下,您需要将varchar转换为更多字符!

select cast(convert(varchar(30), getdate(), 110) as datetime)
                            **

问题实际上是:为什么要将GETDATE()的输出转换为Varchar,然后再将DATETIME转换为SELECT GETDATE()

你不能只使用

23:59:59

这就是全部?

更新:好的,您想要获取当天,但SELECT CAST(CONVERT(VARCHAR(10), GETDATE(), 110) + ' 23:59:59' AS DATETIME) 的固定时间?

试试这个:

{{1}}

答案 1 :(得分:0)

以下任何一种都可以用于显示目的;

SELECT DATEADD(s, -1, DATEADD(day, 1, 
          CONVERT(DATETIME, CONVERT(DATE, GETDATE()))));

...或...

SELECT DATEADD(s, -1, DATEADD(day, 1,
          DATEADD(day, DATEDIFF(day, 0, GETDATE()), 0)));

您也可以设置23:59:59的固定时间,但是您在闰秒调整时会得到无效时间(可能会也可能不会)

如果您想将其用于比较目的,最好只使用“少于下一个日期”。

答案 2 :(得分:0)

如果您想使用结束时间返回当前日期,则必须手动追加结束时间:

select cast(convert(varchar(10), getdate(), 110) + ' 23:59:59.997' as datetime)

答案 3 :(得分:0)

仅供显示(无毫秒)

SELECT
    CONVERT(VARCHAR(10), GETDATE(), 110) + ' 23:59:59'