简体   繁体   中英

SQL Server equivalent of MySQL's 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()getutcdate()

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

GetDate() and GetUTCDate()

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

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM