SQL SERVER – Retrieve Current DateTime in SQL Server CURRENT_TIMESTAMP, GETDATE(), {fn NOW()}

There are three ways to retrieve the current DateTime in SQL SERVER. CURRENT_TIMESTAMP, GETDATE(), {fn NOW()}

SQL SERVER - Retrieve Current DateTime in SQL Server CURRENT_TIMESTAMP, GETDATE(), {fn NOW()} currentdatetime

CURRENT_TIMESTAMP
CURRENT_TIMESTAMP is a nondeterministic function. Views and expressions that reference this column cannot be indexed. CURRENT_TIMESTAMP can be used to print the current date and time every time that the report is produced.

GETDATE()
GETDATE is a nondeterministic function. Views and expressions that reference this column cannot be indexed. GETDATE can be used to print the current date and time every time that the report is produced.

{fn Now()}
The {fn Now()} is an ODBC canonical function which can be used in T-SQL since the OLE DB provider for SQL Server supports them. {fn Now()} can be used to print the current date and time every time that the report is produced.

If you run following script in Query Analyzer. I will give you the same results. If you see the execution plan there is no performance difference. It is the same for all the three select statements.

SELECT CURRENT_TIMESTAMP 
GO 
SELECT {fn NOW()} 
GO 
SELECT GETDATE() 
GO

Performance:
There is absolutely no difference in using any of them. As they are absolutely the same.

My Preference:
I like GETDATE(). Why? Why bother when they are the same!!!

Quick Video on the same subject about datetime

[youtube=http://www.youtube.com/watch?v=BL5GO-jH3HA]

Reference: Pinal Dave (https://blog.sqlauthority.com)

SQL DateTime, SQL Function, SQL Scripts, SQL Server
Previous Post
SQL SERVER – Find Length of Text Field
Next Post
SQLAuthority.com News – iGoogle Gadget Published

Related Posts

458 Comments. Leave new

  • Actually i worked in Oracle 10g. Now i got prj in Sql Server 2005. Here i feel little difficult in formatting Date.
    Can u tell me how to format Date as ” DD\Mon\YYYY”.
    Here in Sql Server 2005 gives both DateandTime.

    Reply
    • can you help me with retrieving the the most current date and counting it? For example if 10 request came in today i want to display 10.

      I am using MSSQL version unknown. I am also programming in PHP, thanks. Any help will b greatly appreciated.

      Reply
      • select top 1 dateadd(day,datediff(dau,0,datecol),0) as datecol,count(*) from table
        group by dateadd(day,datediff(dau,0,datecol),0)
        order by 1 desc

      • SELECT TOP 1 COUNT(*) As DateCount
        FROM [table name]
        GROUP BY [date field]
        HAVING [date field] = MAX([date field])
        ORDER BY [date field] DESC

    • can you help me if there is any Facility or command in SQL Server 2005 ..
      to Execute the stored procedure on particular time span..

      I want to execute stored procedure /Function @ 00:01AM (Automatically) on daily basis..

      i m using ASP.Net

      I m fresher …Plz kindly tell me if possible..

      Reply
      • Hi Vinod,

        You can create an individual job for this under “SQL Server Agent” option.
        Create one new job there and then you can mention your query like
        Exec [Dbo].[SPName].
        After this you can schedule its date and time as per your requirement. And then your job will be execute accordingly.

        Thanks,
        Yash Thakkar

    • To refer back to the article:

      SELECT {fn CURRENT_DATE()};

      My preference is also GETDATE () but it is T-SQL specific. CURRENT_DATE feels closer to Oracle syntax:

      SELECT CURRENT_DATE FROM DUAL;

      Reply
  • Hi,

    Don’t feel that i’m appreciating Oracle. i’m New for Sql Server.

    Just now i worked u r example.

    Actually i need a Date in this format ( 25-Jun-2007).

    In Oracle we use as follows,

    Query:
    select to_char(’25/06/2007′,’dd-Mon-YYYY’) from dual;

    Result:
    25-Jun-2007

    In Sql-Server 2005, i tried following query.
    Query:

    select substring(convert(varchar(10),getdate(),111),len(convert(varchar(10),getdate(),111))-1,2) + ‘-‘
    + substring(convert(varchar(20),getdate(),0),1,3)+’-‘+substring(convert(varchar(10),getdate(),111),1,4)as Dat

    Result:
    25-Jun-2007

    See the Length of the query, can u give me a short query to format Date in Sql-Server 2005

    Regards
    S. Ramkumar

    Reply
  • Hi,

    Thankyou Mr. Pinaldave. i saw that on-line book. There are lot of styles were given for Date conversion. I think style no: 105 and 106 will satisfy my requirement.

    Thankyou again. Bye.

    Regards
    S. Ramkumar

    Reply
  • Didier Peinke
    July 27, 2007 12:50 am

    Hi, am learning SQL SERVER 2005. How i do condition in Date like

    SELECT…
    FROM…
    WHERE EndDate < …………….

    I have try currentdate, SYSDATE but it error. Please provide a code of Current date thank.

    Didier Peinke

    Reply
  • Hello

    I have a table in sql server 2005 which contain a column for date.
    I want to put a validation that if user does not specify the date, it takes current date and time.
    Is it possible by setting the ‘Default value’ for that column?? if yes how can i dothat.
    Please help me.
    Thanl you

    Jigna

    Reply
  • how do get day of Date?
    eg: monday, friday

    Reply
  • how to retrieve “yyyy” from database

    Reply
  • how to retrieve sql database server

    Reply
  • When I use ISQL to execute “select getdate()” or “select current_timestamp” or “select {fn NOW()}” the timestamp returned is “yyyy-mm-dd hh:mm:ss.ttt”. When I run the same “select” in ADO the timestamp is returned as “dow-mmm-dd hh:mm:ss timezone yyyy”….what gives? I need the timestamp exactly as it appears in ISQL…

    Thanks

    Steve

    Reply
    • Select * from customert where replace(convert(varchar(20),date,106),’ ‘,’-‘) between replace(convert(varchar(20),’17-May-10′ ,106),’ ‘,’-‘) and replace(convert(varchar(20),’19-May-10′ ,106),’ ‘,’-‘)
      it will work!!!!

      Reply
  • this query does not retrieve data?
    select *
    from Main_Table
    where Todays_date <= convert(varchar,datepart(yyyy,getdate())) + ‘-‘ + convert(varchar,datepart(mm,getdate())) + ‘-‘ + convert(varchar,datepart(dd,getdate()))

    Reply
  • hi

    how to get previous date query.

    thks

    Reply
  • I am trying to do something very simple, but can’t seem to get it to work. I am using a PHP include to update certain parts of my website. What I want to do is take the date in the start_date column add n number of days to it, then run the PHP script. Can anybody give me any help on this?

    Thanks so much!!!!

    Tran

    Reply
  • How i give current date from system in SQL.

    Reply
  • Hi,
    i was wondering if i can ask, if anyone knows how to reference the getdate() function in a table, in SQL express, from a vb.net form. My current query is

    SELECT *
    FROM table1
    WHERE date = ‘textbox1.text ‘

    this however does not work, but if i put the date in its binary date format in the textbox this works, i can select something, does anyone have any ideas about a conversion??…..

    Thank you in advance.

    ashlesh

    Reply
  • hi, i need more queries about date and time.
    i have a problem.
    i) how to store only time with AM or PM notation in datetime type
    ii) how display time with out milliseconds

    i need immediate solution.

    regards,

    thanks.

    Reply
  • Hi Lakshmi,

    You may use the following :

    SELECT LTRIM(RIGHT(CONVERT(CHAR(26),GETDATE(),109),14))

    There might be a better way of doing it. Maybe Guru (Mr. Dave) can help us.

    All the best.

    Reply
  • Hi again Lakshmi,

    You may also use the following :

    SELECT RIGHT(CONVERT(VARCHAR(20), GETDATE(), 100),7)

    Regards,
    Vishwanath

    Reply
  • Hi once again Lakshmi,

    You may create a function to get the time part and can use the function wherever you want. Create a function as follows :

    CREATE FUNCTION [dbo].[udf_GetTime] ( @myDateTime DATETIME)
    RETURNS VARCHAR(50)
    AS
    BEGIN
    DECLARE @RetDate VARCHAR(50)
    SELECT @RetDate = RIGHT(CONVERT(VARCHAR(50), @myDateTime, 100),7)
    RETURN @RetDate
    END
    GO

    — Use the function like this :

    SELECT [dbo].[udf_GetTime](GETDATE())

    Reply
  • Hi Pinal,

    create table employee
    (
    emp_id varchar(5) NOT NULL,
    fname varchar(20)NOT NULL,
    lname varchar(30)NOT NULL,
    job_id smallint,
    hire_date DATETIME DEFAULT GETDATE());

    insert into employee values(‘00003′,’Joe’,’Wys’,’0001′,”);

    in above table, i need to get current datetime, but unfornately I am not getting it….follwoing is the result :–
    00003 Joe Wys 1 1900-01-01 00:00:00.000

    What may be the reason ?

    Reply
  • Nitin –

    You are overwriting your default value when you specify ” as your last value. You can not supply a value if you want the default to kick in. When you supply ”, the system puts the blank datetime in, which is 1900-01-01 00:00:00.000. The correct insert would be

    INSERT INTO employee (emp_id, fname, lname, job_id) VALUES (‘00003, ‘Joe’, ‘Wys’, ‘0001’);

    This should keep the default value for the hire_date.

    Reply
    • Yes. Empty string can’t be used as default
      Also it would represented differently according to datatypes
      Refer this

      Reply

Leave a Reply