我正在编写一个SQL脚本以在数据库中注册组件。其中之一要求DateTime(从去年开始)作为值之一插入表中,如下所示:
INSERT INTO ComponentTable (ComponentId, Setting, [Value]) VALUES ('id', 'StartDate', ... )
我以前用来插入值的C#是DateTime.Today.AddDays(-365).ToString()
(在切换到数据库之前)。
是否可以将相同的内容添加到上面的SQL脚本中?
谢谢
答案 0 :(得分:1)
本文显示并说明了您需要的SQL Server日期/时间功能:
Date and Time Data Types and Functions (Transact-SQL)
对于您而言,这可能有效:
INSERT INTO ComponentTable (ComponentId, Setting, [Value]) VALUES ('id', 'StartDate', DATEADD(DAY, -365, GETDATE()))
请注意以下几点:
GETUTCDATE()
而不是GETDATE()
,并将C#客户端应用中检索到的值转换为本地时间(使用DateTime.ToLocalTime()
函数)可能会有用。答案 1 :(得分:0)
我尝试了以下操作,这为您提供365天之前的日期;这就是你想要的吗?
CREATE TABLE test (ID serial PRIMARY KEY, startdate DATE);
INSERT INTO test (startdate)VALUES (date(now()) - integer '365');
查看文档:{{3}}
如果您想要精确的一年(照顾(年),则可能需要使用“提取”来获得年份,然后减去一年,然后重建日期。