2

ニュースの時間と日付を保存したいのですが、以下の方法でユーザーの時間を保存します。ユーザーの時間が間違っていると、間違った時間が保存されます。代わりにサーバーの時間を使用するにはどうすればよいですか。

SqlConnection sqlconn = new SqlConnection(connStr);
SqlCommand sqlcmd = new SqlCommand("insert into SubmitManuscript(username,title,authors,type,date,upload,reviewer1,email1,reviewer2,email2,reviewer3,email3)values(@username,@title,@authors,@type,@date,@upload,@reviewer1,@email1,@reviewer2,@email2,@reviewer3,@email3)", sqlconn);
sqlcmd.Parameters.AddWithValue("@username", username);
sqlcmd.Parameters.AddWithValue("@title", Text_Title.Text);
sqlcmd.Parameters.AddWithValue("@authors", Text_Author.Text);
sqlcmd.Parameters.AddWithValue("@type", dd_Type.SelectedItem.Text);
sqlcmd.Parameters.AddWithValue("@date", DateTime.Now);
//sqlcmd.Parameters.AddWithValue("@upload", "~/Suppelment/" + 
4

1 に答える 1

5

datetimeパラメータを渡す必要はありません。データベースのテーブルでデフォルト値として日時を設定するだけです。それでうまくいくはずです。

これをテーブル生成スクリプトで設定する方法のリンクは次のとおりです。

日時列のデフォルト値を設定する方法

編集:テーブルには、レコードを挿入するときにsystem-datetimeを自動的に設定する特別なDateTimeStamp列が必要です。例として使用できる簡単なスクリプトを置いています。

注:すでにテーブルを配置している場合は、スクリプトから開始してくださいALTER TABLE

CREATE TABLE [dbo].[Employee]
(
    [EmployeeId] [int] IDENTITY(1,1) NOT NULL,
    [Name] [varchar](50) NULL,
    [BirthDate] [datetime] NOT NULL,
    [LastUpdateTime] [datetime] NOT NULL,

    CONSTRAINT [PK_Employee] 
        PRIMARY KEY CLUSTERED ([EmployeeId] ASC)
                    WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, 
                          IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, 
                          ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
) ON [PRIMARY]
GO

SET ANSI_PADDING OFF
GO

ALTER TABLE [dbo].[Employee] 
    ADD CONSTRAINT [DF_Employee_LastUpdateTime]  
        DEFAULT (getdate()) FOR [LastUpdateTime]
GO

--- You may also use multiple record insert statement in SQL Server 2008
--- however, I will use a traditional approach here
INSERT INTO [dbo].[Employee] (Name, BirthDate)
VALUES ('Smith', '04/14/1979')

INSERT INTO [dbo].[Employee] (Name, BirthDate)
VALUES ('Jhone', '11/08/1983')
GO
于 2012-06-30T06:58:55.920 に答える