2012-06-30 2 views
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/" + 
+2

Это 'DateTime.Now' работает на сервере (веб), так что время этого сервера, а не компьютера клиента. –

+0

Помимо того, что @HansKesting упомянуто выше, я действительно не понимаю, почему вы не должны доверять дате и времени сервера, на котором выполняете свои бизнес-процессы. Честно говоря, я не думаю, что решение вашей проблемы решено, разрешив db-серверу поставить дату и время. –

ответ

5

Там нет нет необходимости передавать параметр DATETIME. Просто установите значение datetime как значение по умолчанию в вашей таблице в базе данных. Это должно делать свое дело.

Вот ссылка, как установить это в скрипте генерации таблицы:

How to set the default value for a datetime column

Edit: Ваша таблица должна иметь специальный столбец DateTimeStamp, который установит систему-DateTime автоматически при вставке запись. Я помещаю простой сценарий, который вы можете использовать в качестве примера.

Примечание: Если у вас уже есть таблица в месте, то просто запустите из сценария 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 
+0

Я не могу понять, можете ли вы объяснить больше. –

+0

Сценарий является частью ответа, чтобы дать вам представление. –

+1

большое спасибо ... –

Смежные вопросы