none
Como trabalhar com a data do servidor em vez de usar a data da maquina local? RRS feed

  • Pergunta

  • Boa noite amigos, por favor!

    Eu quero criar uma funçcao em sql que retorna a data e hora actual do servidor, e trabalhar com esta data em vez de usar a data da maquina local.

    como faço isso? alguem me ajuda?

    Obrigado

    Usando Sql, Linq To Sql e VB.Net


    Daniel Rosa Iniciante de programação em vb.net, linq sql e Sql server

    terça-feira, 1 de julho de 2014 17:49

Respostas

  • Olha como eu faço:

    public static DateTime horaServidor (DateTime hora,bool param)
            {
                string comando = string.Empty;
    
                using (MySqlConnection conn = daoBanco.getInstancia().getConexao())
                {
                    if(param == false)
                        comando = "SELECT CONVERT(VARCHAR(11),GETDATE(),101)" AS "Data";
                
    
                    using (MySqlCommand cmd = new MySqlCommand(comando, conn))
                    {
                        conn.Open();
    
                        MySqlDataReader dr = cmd.ExecuteReader();
                        while (dr.Read())
                        {
                             hora = Convert.ToDateTime(dr["Data"].ToString());//Alias que usei para a função data
                        }
                        dr.Close();
                    }
    
                }


    terça-feira, 1 de julho de 2014 19:00
  • Da maneira que mostrei acima dá certo
    terça-feira, 1 de julho de 2014 19:02
  • Posta teu código ai!
    terça-feira, 1 de julho de 2014 19:07
  • Obrigado!

    Vejo que o seu codigo esta em C# , eu uso VB.Net e Linq To Sql com um DataContext

    podes converter este codigo em vb.net?

    Obrigado



    Daniel Rosa Iniciante de programação em vb.net, linq sql e Sql server

    Olhai:

     Public Shared Function horaServidor(ByVal hora As DateTime, ByVal param As Boolean) As DateTime
            Dim comando As String = string.Empty
            Dim conn As MySqlConnection = daoBanco.getInstancia.getConexao
            If (param = false) Then
                comando = "SELECT CONVERT(VARCHAR(11),GETDATE(),101)"
            End If
            AS
            "Data"
            Dim cmd As MySqlCommand = New MySqlCommand(comando, conn)
            conn.Open
            Dim dr As MySqlDataReader = cmd.ExecuteReader
            
            While dr.Read
                hora = Convert.ToDateTime(dr("Data").ToString)
                'Alias que usei para a fun��o data
                
            End While
            dr.Close
        End Function

    terça-feira, 1 de julho de 2014 19:13
  • Boa tarde Daniel. Da forma como você pretende utilizar, ou seja, diretamente para gravar na tabela o correto e mais simples é você criar uma CONSTRAINT DEFAULT na sua tabela. Segue abaixo um exemplo.

    CREATE TABLE TESTE(Id int, Descricao varchar(50), DataHora Datetime);

    GO

    No exemplo acima você precisa especificar a data.

    ALTER TABLE TESTE ADD CONSTRAINT DF_Teste_DataHora DEFAULT GETDATE();

    GO

    Com este script se vc nao informar a data para o registro ela automaticamente gravará a data do servidor.

    Espero ter ajudado

    terça-feira, 1 de julho de 2014 19:21

Todas as Respostas

  • Faz assim amigo:

    select GETDATE();

    • Sugerido como Resposta Raniel Nogueira terça-feira, 1 de julho de 2014 18:47
    • Não Sugerido como Resposta Raniel Nogueira terça-feira, 1 de julho de 2014 19:06
    terça-feira, 1 de julho de 2014 18:46
  • Boa noite amigos, por favor!

    Eu quero criar uma funçcao em sql que retorna a data e hora actual do servidor, e trabalhar com esta data em vez de usar a data da maquina local.

    como faço isso? alguem me ajuda?

    Obrigado

    Usando Sql, Linq To Sql e VB.Net


    Daniel Rosa Iniciante de programação em vb.net, linq sql e Sql server

    Se for só a data faz assim:

    SELECT CONVERT(VARCHAR(11),GETDATE(),110)

    • Sugerido como Resposta Raniel Nogueira terça-feira, 1 de julho de 2014 19:06
    terça-feira, 1 de julho de 2014 18:49
  • Obrigado Raniel pela resposta!

    Onde coloco este codigo  select GETDATE()?

    Podes dar um exemplo ?

    Obrigado


    Daniel Rosa Iniciante de programação em vb.net, linq sql e Sql server

    terça-feira, 1 de julho de 2014 18:51
  • Me diz como você queria utilizar? retorna para um TimePicker?
    terça-feira, 1 de julho de 2014 18:54
  • Boa tarde, como você pretende usar a data, onde e quando ela será utilizada e atualizada?

    terça-feira, 1 de julho de 2014 18:55
  • Olha como eu faço:

    public static DateTime horaServidor (DateTime hora,bool param)
            {
                string comando = string.Empty;
    
                using (MySqlConnection conn = daoBanco.getInstancia().getConexao())
                {
                    if(param == false)
                        comando = "SELECT CONVERT(VARCHAR(11),GETDATE(),101)" AS "Data";
                
    
                    using (MySqlCommand cmd = new MySqlCommand(comando, conn))
                    {
                        conn.Open();
    
                        MySqlDataReader dr = cmd.ExecuteReader();
                        while (dr.Read())
                        {
                             hora = Convert.ToDateTime(dr["Data"].ToString());//Alias que usei para a função data
                        }
                        dr.Close();
                    }
    
                }


    terça-feira, 1 de julho de 2014 19:00
  • Obrigado a todos pelas respostas.

    Eu tenho tabelas com campos do tipo dateTime, e quero que a data com o sistema vai trabalhar venha do servidor e não do posto onde estiver a rodar o sistema.

    isso por questoes de segurança nas datas dos dados.


    Daniel Rosa Iniciante de programação em vb.net, linq sql e Sql server

    terça-feira, 1 de julho de 2014 19:01
  • Da maneira que mostrei acima dá certo
    terça-feira, 1 de julho de 2014 19:02
  • Posta teu código ai!
    terça-feira, 1 de julho de 2014 19:07
  • Obrigado!

    Vejo que o seu codigo esta em C# , eu uso VB.Net e Linq To Sql com um DataContext

    podes converter este codigo em vb.net?

    Obrigado


    Daniel Rosa Iniciante de programação em vb.net, linq sql e Sql server

    terça-feira, 1 de julho de 2014 19:08
  • Obrigado!

    Vejo que o seu codigo esta em C# , eu uso VB.Net e Linq To Sql com um DataContext

    podes converter este codigo em vb.net?

    Obrigado



    Daniel Rosa Iniciante de programação em vb.net, linq sql e Sql server

    terça-feira, 1 de julho de 2014 19:09
  • Cara é a mesma lógica só muda um pouco nos comandos!, posta teu código para que eu possa te ajudar.
    terça-feira, 1 de julho de 2014 19:11
  • Obrigado!

    Vejo que o seu codigo esta em C# , eu uso VB.Net e Linq To Sql com um DataContext

    podes converter este codigo em vb.net?

    Obrigado



    Daniel Rosa Iniciante de programação em vb.net, linq sql e Sql server

    Olhai:

     Public Shared Function horaServidor(ByVal hora As DateTime, ByVal param As Boolean) As DateTime
            Dim comando As String = string.Empty
            Dim conn As MySqlConnection = daoBanco.getInstancia.getConexao
            If (param = false) Then
                comando = "SELECT CONVERT(VARCHAR(11),GETDATE(),101)"
            End If
            AS
            "Data"
            Dim cmd As MySqlCommand = New MySqlCommand(comando, conn)
            conn.Open
            Dim dr As MySqlDataReader = cmd.ExecuteReader
            
            While dr.Read
                hora = Convert.ToDateTime(dr("Data").ToString)
                'Alias que usei para a fun��o data
                
            End While
            dr.Close
        End Function

    terça-feira, 1 de julho de 2014 19:13
  • Não tenho codigo para este assunto.

    Mas eu pretendo criar uma funçao e estou a fazer assim:

    Private Function GetServerdate() As DateTime

                Using ctx As New DAL.DANIROSADataContext

                    Return DataServidor

                End Using

     End Function

    é nesta funçao que pretendo tratar da data.

    Obrigado


    Daniel Rosa Iniciante de programação em vb.net, linq sql e Sql server

    terça-feira, 1 de julho de 2014 19:20
  • Boa tarde Daniel. Da forma como você pretende utilizar, ou seja, diretamente para gravar na tabela o correto e mais simples é você criar uma CONSTRAINT DEFAULT na sua tabela. Segue abaixo um exemplo.

    CREATE TABLE TESTE(Id int, Descricao varchar(50), DataHora Datetime);

    GO

    No exemplo acima você precisa especificar a data.

    ALTER TABLE TESTE ADD CONSTRAINT DF_Teste_DataHora DEFAULT GETDATE();

    GO

    Com este script se vc nao informar a data para o registro ela automaticamente gravará a data do servidor.

    Espero ter ajudado

    terça-feira, 1 de julho de 2014 19:21
  • Anderson de Paula muito obrigado pela ajuda.

    vou fazer isso que sugeriste, mas na mesma vou precisar de uma funçao na aplicaçao para tratar da Data do sistema.

    Vou lhe dar um exemplo: Imagine que estamos a trabalhar com o Ano 2014 e por engano o usuario ao digitar a data digita 2016 ou 2010, ai eu quero o sistema avise ao usuario que o ano em processamento é 2014 e a data actual é 01-07-2014...

    Obrigado, esta é a ideia

    Avatar de Anderson de Paula

    Anderson de Paula

    Consultor independente

    40 Pontos200
    Realizações recentes.
    Primeira resp. confirmadaPrimeira resp. em fóruns

    Daniel Rosa Iniciante de programação em vb.net, linq sql e Sql server

    terça-feira, 1 de julho de 2014 19:48
  • Anderson !

    Au adicionar a constraint esta a dar uma mensagem de erro que.

    o codigo esta assim:

    CREATE TABLE [dbo].[Departamentos](

          [ID_DEPARTAMENTO] [int] IDENTITY(1,1) NOT NULL,

          [ID_EMPRESA] [int] NOT NULL,

          [SIGLA_DEPARTAMENTO] [nchar](10) NOT NULL,

          [DESCRIÇÃO_DEPARTAMENTO] [varchar](30) NOT NULL,

          [DATA_CADASTRO_PC] [date] NOT NULL,

          [DATA_CADASTRO_SERVER] [date] NOT NULL,

     CONSTRAINT [PK_Departamentos] PRIMARY KEY CLUSTERED

    (

    USE DANIROSA

    GO

    ALTER TABLE Departamentos ADD CONSTRAINT DF_Depart_DataHora DEFAULT GETDATE ()

     GO

    Erro:

    Msg 142, Level 15, State 2, Line 0

    Incorrect syntax for definition of the 'TABLE' constraint.


    Daniel Rosa Iniciante de programação em vb.net, linq sql e Sql server

    terça-feira, 1 de julho de 2014 21:30
  • Boa noite Daniel, você apenas esqueceu de especificar a coluna, o código correto segue abaixo.

    ALTER TABLE dbo.Departamentos ADD CONSTRAINT DF_Departamentos_Data_Cadastro_Server DEFAULT GETDATE() FOR Data_Cadastro_Server;

    GO

    Espero ter ajudado

    terça-feira, 1 de julho de 2014 23:38
  • Muito obrigado, ja reparei...

    Daniel Rosa Iniciante de programação em vb.net, linq sql e Sql server

    quarta-feira, 2 de julho de 2014 11:56
  • Bom dia Ranier!

    Não consigo converter este codigo para Linq To Sql usando o meu DataContext:

    PrivateFunction GetServerdate()AsDateTime

               Using ctxAsNew DAL.DANIROSADataContext

                   Return DataServidor

               EndUsing

    EndFunction

    Com ficaria ?

    Public Shared Function horaServidor(ByVal hora As DateTime, ByVal param As Boolean) As DateTime
           
    Dim comando As String = string.Empty
           
    Dim conn As MySqlConnection = daoBanco.getInstancia.getConexao If (param = false) Then
                comando
    = "SELECT CONVERT(VARCHAR(11),GETDATE(),101)"
           
    End If
           
    AS
           
    "Data"
           
    Dim cmd As MySqlCommand = New MySqlCommand(comando, conn)
            conn
    .Open
           
    Dim dr As MySqlDataReader = cmd.ExecuteReader
           
           
    While dr.Read
                hora
    = Convert.ToDateTime(dr("Data").ToString)
               
    'Alias que usei para a fun��o data
               
           
    End While
            dr
    .Close
       
    End Function

    Obrigado


    Daniel Rosa Iniciante de programação em vb.net, linq sql e Sql server

    quarta-feira, 2 de julho de 2014 12:58