我想从getdate()
保存日期(例如:2011/09/26 00:00:00
)。我使用SQL Server 2005的仅在数据库中插入日期
我的SQL查询将是这样的:
Insert into Merchant(startdate)
values **today's date only**
这怎么可能?
我想从getdate()
保存日期(例如:2011/09/26 00:00:00
)。我使用SQL Server 2005的仅在数据库中插入日期
我的SQL查询将是这样的:
Insert into Merchant(startdate)
values **today's date only**
这怎么可能?
INSERT INTO Merchant
(startdate)
VALUES (DATEADD(DAY,0,DATEDIFF(DAY,0,GETDATE())))
非常感谢Martin! – Rem
我唯一的建议是在插入之前将'GetDate()'加载到变量中。在这种情况下,它只被调用一次,但在其他选择或更新操作中,您不希望为查询中的每一行调用GetDate()数学运算。 –
@Jeff - [这不是必须的](http://blogs.msdn.com/b/conor_cunningham_msft/archive/2010/04/23/conor-vs-runtime-constant-functions.aspx)。如果你使用'SELECT GETDATE()FROM HugeTable',所有的行都会有相同的值,不管SELECT有多长。 –
select dateadd(dd,0, datediff(dd,0, GETDATE()))
但是,如果你移动到SQL2008,我建议您变更列DATE,而不是DATETIME。
我建议远离速记方法 - 例如拼写'DAY'。其他人阅读你的代码会感谢你。背景:http://sqlblog.com/blogs/aaron_bertrand/archive/2011/09/20/bad-habits-to-kick-using-shorthand-with-date-time-operations.aspx –
@AaronBertrand好点,好点安全比对不起。 –
你可以尝试这样的事情:
编辑 - 修订以反映午盘后四舍五入。
SELECT CONVERT(DATETIME, FLOOR(CONVERT(FLOAT, GETDATE())))
这里的另一个之路探寻你可以试试:
SELECT CAST(CONVERT(VARCHAR, GETDATE(), 101) AS DATETIME)
'SELECT CONVERT(DATETIME,CONVERT(INT,GETDATE()))'在中午之后轮次上涨。 –
谢谢。我已经添加了一种替代方法。 –
我有点迟到了,但这里是我的2美分:
INSERT INTO Merchant
(startdate)
VALUES (cast(GETDATE() as Date))
那当然,将只能从SQL Server 2008起作用。但是,我将留下这个答案,以供学习和未来参考。
不适用于SQL Server 2005 –
@MartinSmith嗯,好点。但我想我会编辑并留在这里以备将来参考。为了学习:) –
所以你想总是使用2011/09/26 00:00:00作为你的日期,对吧?保持2011/09/26 00:00:00为下周和下个月等? – Coffee
它应该取决于日期。马丁帮助了我。感谢您检查Adel :-) – Rem