Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/329.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 将日期时间插入SQL脚本_C#_Sql_Sql Server - Fatal编程技术网

C# 将日期时间插入SQL脚本

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日期/时间功能: 在您的情况

我正在编写一个SQL脚本来在数据库中注册组件。其中之一要求将DateTime(从去年开始)作为值之一插入表中,如下所示:

插入到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()))
注意以下几点:

  • 以前,您在客户端应用程序(C#)中确定了日期/时间值,因此使用客户端计算机的日期/时间值。使用SQL Server功能时,将使用运行SQL Server实例的计算机的系统日期/时间。(我认为这是一个优势)
  • 建议在数据库中存储日期/时间值,使其不是特定于区域的。因此,如果您在不同的时区有多个客户端,那么包含时区可能很重要。在我看来,将UTC日期/时间值存储在数据库中(使用
    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:-(