如何在T-SQL中将DateTime转换为精度大于天的数字?
下面的两个查询都转换为相同的数字
SELECT CONVERT(bigint,CONVERT(datetime,'2009-06-15 15:00:00'))
SELECT CAST(CONVERT(datetime,'2009-06-15 23:01:00') as bigint)
结果
39978
39978
仅当日期不同时,生成的数字才会不同。 有什么方法可以将 DateTime 转换为更精确的数字,就像我们在 .NET 中使用 .Ticks 属性所做的那样?
我需要至少一分钟的精度。
Both queries below translates to the same number
SELECT CONVERT(bigint,CONVERT(datetime,'2009-06-15 15:00:00'))
SELECT CAST(CONVERT(datetime,'2009-06-15 23:01:00') as bigint)
Result
39978
39978
The generated number will be different only if the days are different. There is any way to convert the DateTime to a more precise number, as we do in .NET with the .Ticks property?
I need at least a minute precision.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(8)
好吧,我会这样做:
其中“1990-1-1”是任意基准日期时间。
Well, I would do it like this:
where '1990-1-1' is an arbitrary base datetime.
产量 39977.9590277778
yields 39977.9590277778
如果这样做的目的是从
日期
创建一个唯一的值,那么我会这样做这获取日期并将其声明为一个简单的时间戳
If the purpose of this is to create a unique value from the
date
, here is what I would doThis gets the date and declares it as a simple timestamp
为此,请使用
DateDiff
:DatePart
从“年”降到“纳秒”。更多信息请参见.. http://msdn.microsoft.com/en-us/库/ms189794.aspx
Use
DateDiff
for this:DatePart
goes from Year down to Nanosecond.More here.. http://msdn.microsoft.com/en-us/library/ms189794.aspx
这是相同的 bigint 版本
And here is a bigint version of the same
CAST 为浮点数或小数,而不是 int/bigint。
整数部分(小数点前)表示整天数。 小数点后面是小数天数(即时间)。
CAST to a float or decimal instead of an int/bigint.
The integer portion (before the decimal point) represents the number of whole days. After the decimal are the fractional days (i.e., time).
您可以使用 T-SQL 在日期到达 .NET 程序之前对其进行转换。 如果您不需要在 .NET 程序中进行额外的日期转换,那么这通常会更简单。
You can use T-SQL to convert the date before it gets to your .NET program. This often is simpler if you don't need to do additional date conversion in your .NET program.