我有这样的查询:
select cast(convert(varchar(10), getdate(), 110) as datetime)
这样就回来了:
currentdate
-----------------------
2013-07-28 00:00:00.000
但我希望获得结束时间的当前日期。我的预期输出是这样的:
currentdate
-----------------------
2013-07-28 23:59:59
答案 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'