What is the SQL Server timestamp equivalent in sqlce? - sql-server

I have some data with a timestamp in SQL Server, I would like to store that value in sqlce with out getting fancy to compare the two values.
What is the SQL Server timestamp equivalent in sqlce?

Timestamp is from MS Docs
timestamp is a data type that exposes automatically generated binary numbers, which are guaranteed to be unique within a database. timestamp is used typically as a mechanism for version-stamping table rows. The storage size is 8 bytes.
This value makes no sense outside the database it was created in. Thus I don't see how it can be converted.
In a non Sybase/ SQL Server database I would use a version number or last updated column

AS of Sql Compact 3.5, there is support for timestamps, per MSDN:
SQL Server Compact implements the
timestamp (rowversion) data type. The
rowversion is a data type that exposes
automatically generated binary
numbers, which are guaranteed to be
unique in a database. It is used
typically as a mechanism for
version-stamping table rows.

Ok the timestamp is a varbinary that auto generates. So to copy a time stamp you need a varbinary field.

Related

Varchar vs nvarchar - causing distinct values that we don't consider distinct

SQL Server 2019 - we have a column called Entity which is of type nvarchar(max). The data from this column is inserted from tables on the web as part of an automated process.
In querying for DISTINCT values in this column, we only expected one distinct value, but we actually were returned two. But the two values looked exactly the same inside SQL Server Management Studio.
So we added a CONVERT(varchar(max)) to the query in a new column, and we were able to see the difference, as follows:
Entity Converted
Security Law Security Law
Security Law Security ?Law
Does anyone know how or why this different value is occurring, and more importantly, how we can instruct SQL Server to treat these as duplicate values, by only analyzing the nvarchar version?
nvarchar() takes Unicode characters into account. Since you are copying data from web, there could be invisible characters.
you can use regex and extract ASCII characters alone and convert it to varchar so you get distinct values.

How to verify that whether a column is an encryption key/value or plain text in SQL Server 2008

How to verify that whether a column is an encryption key/value or plain text in SQL Server 2008?
Cell or column level encryption in SQL Server 2008 is an external operation - meaning SQL Server doesn't actually know it is encrypted. You create the key, read plaintext data in original type, encrypt and write cipher text as varbinary type back to the table. That means if you complete the process, you'll have a new column of varbinary type.
There are no catalog views you can query since as far as SQL Server is concerned, it is just another varbinary column. There are ways to figure it out manually by checking the length and/or type of the column if the original type is not varbinary. You might also check actual values or use regular expressions if you want to verify per row instead of the entire column. If the original type is varbinary, this is probably not the best place to design a solution.

Convert varchar to timestamp in SQL Server 2008 R2

There is table with timestamp column in SQL Server 2008 R2. When I only add this column to my table I see values like this 0x00000000000007D1. I try to put data into it:
UPDATE test_time SET date3=
CONVERT(TIMESTAMP, CONVERT(datetime,'2002-08-20 14:00:00.000',120))
WHERE ogr_fid=1
But get error
Cannot update timestamp column
What's wrong here?
SQL Server's TIMESTAMP datatype has nothing to do with a date and time!
It's just a binary representation of a consecutive number - it's only good for making sure a row hasn't change since it's been read.
In never versions of SQL Server, it's being called RowVersion - since that's really what it is. See the MSDN docs on ROWVERSION:
Is a data type that exposes automatically generated, unique binary numbers within a database. rowversion is generally used as a mechanism
for version-stamping table rows. The
rowversion data type is just an incrementing number and does not
preserve a date or a time. To record a date or time, use a datetime2
data type.
So you cannot convert a string to a TIMESTAMP in SQL Server.

CakePHP truncating large varchar columns from SQL Server database

Using CakePHP 1.3.11 and SQL Server 2005 and the included MSSQL database driver.
I need to retrieve a varchar(8000) field, however the typical find() queries truncate this field to 256 characters; the actual array value array['comment'] is truncated, so the data beyond character 256 isn't accessed by my application at all.
I tried changing the field to a text datatype and with that change the query returns the full value of the column. Is there a way for cake to read the full value of the column or does it always truncate varchars to 256 characters?
Solution has been to use the text data type on the database side.

Values In Timestamp Field Displayed In Hex (0x000000000000000866) On Microsoft SQL Server 2008

I have a table where I save emails that have been sent. I decided then to add a TimeStamp field to this table so I can track when the e-mail had been sent. Data is being written to the table with out any issues, but when I go to view the table contents using Microsoft SQL Server 2008 Management Studio, the data contained within the Timestamp field is displayed like this: 0x000000000000000000845, even in records that have been written to the database since the Timestamp value was introduced
I then changed the field type to datetime, and it then displays a date. But it displays the date 1900-01-01 00:00:23 for example. I then changed it back to the Timestamp field, and it returned back in to it's current Hexadecimal format.
Am I doing anything wrong?
Cheers
I decided then to add a TimeStamp
field to this table so I can track
when the e-mail had been sent
Ah yes. Reading teh database would have shown you that the TMIestamp field - which is a legacy from Sybase server -does NOT store a timestamp. Basically it is something like a global operations counter. It has NO relation to time.
If you want a real timestamp, put in a DateTime type of column and set the system time as default / through atrigger etc. Timestamp is totally unsuiteable for that.
Again, no a MS thing - MS SQL Server started as Sybase SQL Server port for windows, and the Timestampdata type is a Sybase legacy.

Resources