如何指定特定时间的当前日期?
让我们说上午8:00:00到数据类型datetime
的列EXIT_DT?
我尝试了GETDATE()
AS EXIT_DT,但它给了我当前的日期时间。我正在使用Sql server 2005.有什么帮助吗?
让我们说今天是2013年1月3日,我希望我的结果作为datetime数据类型返回值为1/3/2013 8:00:00 AM。如果我运行语句ytd,结果将是1/2/2013 8:00:00 AM
答案 0 :(得分:6)
此公式将在调用它的那一天始终生成08:00,并避免字符串操作:
select DATEADD(day,DATEDIFF(day,'20010101',GETDATE()),'2001-01-01T08:00:00')
尽量避免使用转换为字符串和从字符串转换的解决方案 - 将日期时间值视为字符串是最大的错误来源之一。
它的工作原理是计算自2001年1月1日以来经过的天数(整数)。然后将相同的天数加到2001年1月1日的08:00。
答案 1 :(得分:1)
你可以试试这个:
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
格式。
答案 2 :(得分:0)
使用转换和getdate()来获取特定格式。
例如:
SELECT CONVERT(VARCHAR(30),GETDATE(),113)
答案 3 :(得分:0)
这有点愚蠢,但它有效
select cast(cast(getdate() as date) as datetime) + '08:00:00'
它会将getdate()
转换为date
,从而失去小时数,而不是将其投放到datetime
并增加8小时。
如果您想避免将varchar
隐式转换为datetime
,可以使用此版本:
select cast(cast(getdate() as date) as datetime)
+ convert(datetime,'08:00:00',114)
答案 4 :(得分:0)
这也有效。 (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。
答案 5 :(得分:0)
-- 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
/