我想将日期时间字段转换为YYYYMMDD形式的数字表示。所以,我的逻辑是(从2011-01-01 12:00:00.000到20110101):
convert(int, replace(cast(getdate() as date), '-', ''))
根据MSDN(http://msdn.microsoft.com/en-us/library/bb630352.aspx),字符串表示是[always?]“YYYY-MM-DD”,所以我只是在从字符串中删除破折号后将该字符串转换为INT。
这总是有效吗?我会遇到一些问题吗?有没有更好的方法来实现这一目标?
由于
答案 0 :(得分:8)
这种方法可行,不确定本地化设置会发生什么。如果您使用内置的日期时间转换功能选项(http://msdn.microsoft.com/en-us/library/ms187928.aspx),则可以避免使用替换,而不必担心区域设置。
示例:
select CAST(convert(varchar,getdate(),112) as int)