C# 将日期时间插入SQL脚本
我正在编写一个SQL脚本来在数据库中注册组件。其中之一要求将DateTime(从去年开始)作为值之一插入表中,如下所示:C# 将日期时间插入SQL脚本,c#,sql,sql-server,C#,Sql,Sql Server,我正在编写一个SQL脚本来在数据库中注册组件。其中之一要求将DateTime(从去年开始)作为值之一插入表中,如下所示: 插入到ComponentTable(ComponentId,设置,[Value])值('id','StartDate',…) 我以前用来插入值的C#是DateTime.Today.AddDays(-365).ToString()(在切换到数据库之前) 有没有办法将相同的内容添加到上面的SQL脚本中 感谢本文展示并解释了您需要的SQL Server日期/时间功能: 在您的情况
插入到ComponentTable(ComponentId,设置,[Value])值('id','StartDate',…)
我以前用来插入值的C#是DateTime.Today.AddDays(-365).ToString()
(在切换到数据库之前)
有没有办法将相同的内容添加到上面的SQL脚本中
感谢本文展示并解释了您需要的SQL Server日期/时间功能: 在您的情况下,这可能会起作用:
INSERT INTO ComponentTable (ComponentId, Setting, [Value]) VALUES ('id', 'StartDate', DATEADD(DAY, -365, GETDATE()))
注意以下几点:
GETUTCDATE()
而不是GETDATE()
并将C#客户端应用程序中检索到的值转换为本地时间(使用该函数)可能是有用的我尝试了以下方法,这给出了365天前的日期;这是你想要的吗
CREATE TABLE test (ID serial PRIMARY KEY, startdate DATE);
INSERT INTO test (startdate)VALUES (date(now()) - integer '365');
见文件:
如果你只想要一年(考虑闰年),那么你可能需要使用“提取”来获得年份,然后减去一,然后重建日期。这是否回答了你的问题?年份也是如此我最关心的是
ToString()
-这只是问问题,强烈建议您也可能引入SQL注入漏洞(以及i18n/l10n错误);日期应作为日期时间参数发送,而不是强制输入字符串;如果您需要帮助,请告诉我-这是非常重要的事情,而不仅仅是nit转换(DATEADD(YEAR,-1,GETDATE())作为日期)
使用PostgreSQL时,我想这很好。但是,我个人更喜欢now()-“365天”::interval
。但是我担心这个问题的目标是Microsoft SQL Server而不是PostgreSQL。很抱歉……我恐怕不熟悉Microsoft SQL Server:-(