I'm a MySQL guy working on a SQL Server project, trying to get a datetime field to show the current time. In MySQL I'd use NOW() but it isn't accepting that.
INSERT INTO timelog (datetime_filed) VALUES (NOW())
I'm a MySQL guy working on a SQL Server project, trying to get a datetime field to show the current time. In MySQL I'd use NOW() but it isn't accepting that.
INSERT INTO timelog (datetime_filed) VALUES (NOW())
getdate()
is the direct equivalent, but you should always use UTC datetimes
getutcdate()
whether your app operates across timezones or not - otherwise you run the risk of screwing up date math at the spring/fall transitions
SYSDATETIME()
and SYSUTCDATETIME()
are the DateTime2 equivalents of
which return a DateTime.
DateTime2 is now the preferred method for storing the date and time in SQL Server 2008+. See the following StackOverflow Post.
You can also use CURRENT_TIMESTAMP
, if you feel like being more ANSI compliant (though if you're porting code between database vendors, that'll be the least of your worries). It's exactly the same as GetDate()
under the covers (see this question for more on that).
There's no ANSI equivalent for GetUTCDate()
, however, which is probably the one you should be using if your app operates in more than a single time zone ...
Following are the functions that you can use in SQL Server instead of NOW()
1. SYSDATETIME() 2. GETDATE () 3. GETUTCDATE() 4. CURRENT_TIMESTAMP
These functions give almost the exact Date and Time while SYSDATETIME gives a more precise time in milliseconds.
Query: SELECT SYSDATETIME()
Output: 2022-12-21 19:38:49.4181976
Query: SELECT GETDATE () | GETUTCDATE() | CURRENT_TIMESTAMP
Output: 2022-12-21 19:38:49.413