将日期时间转换为数字表示

Dom*_*let 4 t-sql sql-server-2008

我想将日期时间字段转换为YYYYMMDD形式的数字表示.所以,我的逻辑是(从2011-01-01 12:00:00.000到20110101):

convert(int, replace(cast(getdate() as date), '-', ''))
Run Code Online (Sandbox Code Playgroud)

根据MSDN(http://msdn.microsoft.com/en-us/library/bb630352.aspx),字符串表示是[always?]"YYYY-MM-DD",所以我只是将该字符串转换为INT从字符串中删除破折号后.

这会一直有效吗?我会遇到一些问题吗?有没有更好的方法来实现这一目标?

谢谢

Mik*_*lsh 8

这种方法可行,不确定本地化设置会发生什么.如果使用内置日期时间转换功能选项(http://msdn.microsoft.com/en-us/library/ms187928.aspx),则可以避免使用替换而不用担心语言环境.

例:

select CAST(convert(varchar,getdate(),112) as int)
Run Code Online (Sandbox Code Playgroud)

  • (格式112是ISO日期/时间格式 - 我喜欢在使用日期时使用它,无论我或我的系统在哪里都可以使用 - yyyymmdd ......)只需用你的日期字段替换getdate().112也将删除时间. (2认同)