3

我有这样的查询:

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

4 回答 4

4

好吧,在这种情况下,您需要提供您varchar正在转换为更多角色的信息!

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

真正的问题是:为什么要首先将输出从GETDATE()转换为 aVarchar然后再转换回 a DATETIME

你不能只用

SELECT GETDATE()

就这样?

更新:好的,所以你想获取当前日期,但固定时间23:59:59

试试这个:

SELECT
   CAST(CONVERT(VARCHAR(10), GETDATE(), 110) + ' 23:59:59' AS DATETIME)
于 2013-07-28T07:17:41.927 回答
1

以下任何一项都将用于显示目的;

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 的固定时间,但您最终会在闰秒调整时获得无效时间(可能会也可能不会)

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

于 2013-07-28T07:22:22.270 回答
0

如果要返回当前日期和结束时间,则必须手动附加结束时间:

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

于 2013-07-28T07:22:39.067 回答
0

仅用于显示(无毫秒)

SELECT
    CONVERT(VARCHAR(10), GETDATE(), 110) + ' 23:59:59'
于 2013-07-28T07:28:43.543 回答