推荐:解读SQL的select语句执行顺序select 语句执行顺序 (7) SELECT (8) DISTINCT (10) TOP_specification select_list (1) FROM left_table (3) join_type JOIN right_table (2) ON join_condition (4) WHERE where_condition (5) GROUP BY group_by_list (6) HAVING having_condition (9) OR
有的时候,我们可能希望按月、按天、按年做一些数据统计,但是,我们实际保存的数据可能是一个很精确的发生时间,可能是到秒。如何根据一个时间之截取其中的一部分就成了问题。
有两个解决方法:
最直接的想法利用DatePart或者Year、Month、Day函数
CAST(
(
STR( YEAR( GETDATE() ) ) + ’/’ +
STR( MONTH( GETDATE() ) ) + ’/’ +
STR( DAY( GETDATE() ) )
)
AS DATETIME
)
如果只要年和月,就省掉前面的。
方法二,利用时间计算函数
例如获得月
DateAdd(month, DateDiff(month, 0, Coltime), 0)
原理就是数据库时间值Coltime减掉1900-1-1获得这期间的月份个数,然后再重新加回1900-1-1。
分享:解读4个编写SQL语句需要注意的常识1.尽量不要对列名进行函数处理。而是针对后面的值进行处理 例如wherecol1=-5的效率比where-col1=5的效率要高 因为后面的条件对列值进行了计算。这样的条件下优化器无法使用索引 而是要针对所有值进行计算之后才能再比较 2.尽量使用和数剧列一样的值进行操作