why "CURRENT_TIMESTAMP" showing wrong time in SQL? - sql

I am using "CURRENT_TIMESTAMP" for automatic date setup inside the column for each row in SQL. It shows date and time but time is wrong. please help.

CURRENT_TIMESTAMP will show you the server timestamp not client side timestamp from where you are querying.
Please check in which timezone your database server is located.

Related

How to know a column store utc time in sql or not

I am working with CDC in sql and we have a table lsn_timeMapping and a column inside this table trans_begintime its type as mentioned in sql is datetime. My question is how can i get to know that whether it stores datetime in utc format or server datetime .
HERE is a flow mentioned in msdn
It would appear that the time is stored based upon the server's locale settings(local timezone). Therefore, it will not be UTC unless the server timezone is set to UTC.
Source: https://connect.microsoft.com/SQLServer/feedback/details/533689/store-utc-in-lsn-time-mapping

How to determine when a SQL Subscription was marked for re-initialization?

MS SQL Server 2012
I am trying to determine when a subscription was marked for reinitialization. I can see when the subscription started to reinitialize, but I want to see at what time the command was issued to reinitialize the subscriptions.
I have looked in the syssubscriptions table, there is a timestamp column, but that is not actually a time. Any way to determine in the sql logs or a modified datetime somewhere else?
Timestamp refers to the date and time that the subscription was created.
I just tested and you can get it from subscription_time value in your distribution database metadata like so:
select publisher_db, subscriber_db, subscription_time, *
from distribution.dbo.MSsubscriptions
where subscriber_id >=0
-Chuck

SQL Server, strange DATETIME behaviour

I have SQL Server Express 2008 on my local system and I am doing some insertions in a datetime column.
The problem is that the same system on production on (SQL Server 2005) hosted on godaddy records a datetime entry as the previous date and a time of 13:00
E.g. Date being inserted is 07/01/2010 00:00:00
Entry in Local DB = 07/01/2010 00:00:00
Entry in Prod DB = 06/30/2010 13:00:00
Could it be some server/db level setting for datetime storage ?
Edit 1:
pls note, I'm inserting a predefined datetime value, the date being inserted is exactly 07/01/2010 00:00:00. I am NOT using GETDATE().
Edit 2: Solution
Ok, thanks for the answers guys but the problem was not from SQL Server, it was from the data being read from an XML form of the serialized dataset. It was sending the the datetime information as 'mm/dd/yyyy T00:00:00+4:00'
All i did was remove the remove the time segment from it and then insert it in the DB.
Cheers !
You are in Dubai = GMT+y hours
Godaddy is in the USA = GMT-x hours
GETDATE() gives SQL server time
You should use GETUTCDATE() to give GMT (UTC since we lost our empire it appears) which will be consistent globally.
The time difference makes me wonder if this is a UTC thing. Are you running this via SSMS or via application code?
Does it always insert 11 hours behind your local?
Is that an explicit time you're giving the column, or is that the column default (perhaps GETUTCDATE ())?

MS SQL 2005: Any way to temporarily set the system date for a T-SQL script to a different date?

We have a bunch of T-SQL scripts dependent on today's date and when they run. If one doesn't run on the week it should, we end up temporarily setting the system time a day before, run the script, then set it back.
Is there anyway to temporarily set the system date for a script without changing the original script, like when you execute it or only for that session?
You could store the actual date in a table / temp table.
THen retrieve or update that date rather then making a call to GetDate().
I've found an answer by someone else, here I share it: "The date is tied to the OS date and time. See here: http://msdn.microsoft.com/en-us/library/ms188383.aspx".
You could refer to this other question Simulate current date on a SQL Server instance?

How can I get Datetime to display in military time in oracle?

I am running some queries to track down a problem with our backup logs and would like to display datetime fields in 24-hour military time. Is there a simple way to do this? I've tried googling and could find nothing.
select to_char(sysdate,'DD/MM/YYYY HH24:MI:SS') from dual;
Give the time in 24 hour format.
More options are described here.
If you want all queries in your session to show the full datetime, then do
alter session set NLS_DATE_FORMAT='DD/MM/YYYY HH24:MI:SS'
at the start of your session.
Use a to_char(field,'YYYYMMDD HH24MISS').
A good list of date formats is available here
It's not oracle that determines the display of the date, it's the tool you're using to run queries. What are you using to display results? Then we can point you to the correct settings hopefully.