如何为当前日期分配特定时间?
假设上午 8:00:00 到数据类型的列 EXIT_DT datetime
?
我试过GETDATE()
AS EXIT_DT 但它给了我当前的日期时间。我正在使用 Sql server 2005。有什么帮助吗?
假设今天是 2013 年 1 月 3 日,我希望我的结果作为日期时间数据类型返回,值为 1/3/2013 8:00:00 AM。如果我运行 ytd 语句,结果将是 1/2/2013 8:00:00 AM
如何为当前日期分配特定时间?
假设上午 8:00:00 到数据类型的列 EXIT_DT datetime
?
我试过GETDATE()
AS EXIT_DT 但它给了我当前的日期时间。我正在使用 Sql server 2005。有什么帮助吗?
假设今天是 2013 年 1 月 3 日,我希望我的结果作为日期时间数据类型返回,值为 1/3/2013 8:00:00 AM。如果我运行 ytd 语句,结果将是 1/2/2013 8:00:00 AM
此公式将始终在调用当天生成 08:00,并避免字符串操作:
select DATEADD(day,DATEDIFF(day,'20010101',GETDATE()),'2001-01-01T08:00:00')
尽量避免与字符串相互转换的解决方案 - 将日期时间值视为字符串是最大的错误来源之一。
它的工作原理是计算自 2001 年 1 月 1 日以来经过的天数(作为整数)。然后将相同的天数添加到 2001 年 1 月 1 日的 08:00。
你可以试试这个:
DECLARE @dt datetime;
SET @dt=CONVERT(DateTime, CONVERT(VARCHAR,GETDATE(),101)+' 8:00:00')
SELECT CONVERT(VARCHAR, @dt, 101)+' '+ LTRIM(RIGHT(CONVERT(VARCHAR(20),@dt, 100), 7))
有关格式,请访问http://www.sql-server-helper.com/tips/date-formats.aspx 。datetime
使用 Convert 和 getdate() 来获取特定格式。
前任:
SELECT CONVERT(VARCHAR(30),GETDATE(),113)
这有点愚蠢,但它有效
select cast(cast(getdate() as date) as datetime) + '08:00:00'
它将 the 投射getdate()
到date
从而失去了几个小时,而不是将它投射到datetime
并增加了 8 个小时。
如果你想避免 to 的隐式转换varchar
,datetime
你可以使用这个版本:
select cast(cast(getdate() as date) as datetime)
+ convert(datetime,'08:00:00',114)
这也有效。(1)。将今天的日期转换为ISO format (yyyymmdd)
(2)。添加时间,(3)。转换回日期时间
Select convert(datetime, convert(varchar, getdate(),112) + ' ' + '8:00:00AM')
--Results
2013-01-03 08:00:00.000
如果您需要特定格式,则需要再次转换回 varchar。
-- AM/PM --
SELECT TO_CHAR(sysdate, 'MM/DD/YYYY HH:MI:SS AM') FROM dual
/
-- 24 hrs format --
SELECT TO_CHAR(sysdate, 'MM/DD/YYYY HH24:MI:SS') FROM dual
/