month和year的参数为整数,为何返回的不是1? select month('2005-5-1'),year('2005-4-1') 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 楼主,执行这个语句看下Select Cast(33 As DateTime),Cast (366 As DateTime)你就会明白select month(33),year(366)等同于select month('1900-02-03 00:00:00.000'),year('1901-01-02 00:00:00.000') 你也不必转换,我告诉你计算方法。 你将提到的33及366等数字看作天数,你用的month()、year()函数就是在1900年1月1日起,这么多天后,分别是几月,或者几年。 我看到了,month将其自动转换为了datetime那么什么情况下他不转换那?也就是说它在什么情况下是显示的1和1900呢? 可是帮助中写的是month(),year()和day()的区别之一就是month()和year()对整型的诠释与day()不同day()是累加month(),year()是忽略,直接认为是1900.1.1 month(33),year(366),就是在1900年1月1日基础上加上32天和加上366天。想得到1和1900,month中的数字必须大于等于0,小于等于30,year中的数字必须大于等于0,小于等于364。select month(0),year(0)select month(30),year(364)就可以得到1和1900 select month(33),yeat(366)结果是 ----------- ----------- 2 1901因為一個月最多有31天吧month(33)系統默認就從1月開始的。超過當1月的天數就會加1,所以顯示的就2一年有365天但有的時候不就,系統默認的就從1900年開始。超過了1900的天數就會加1.所以1901 那岂不是说明中的解说根本就没有意义还是和day一样 SQL Server 2005 中怎么使用 标识列 请问这句语句怎么没有返回的 客户端反应奇慢? 写了触发器不起作用,谁能帮我看一下问题出在哪 怎样删除字段中的恶意代码,急!! 初学者提问~~~ 一个关于排序的问题! 请教 MS Sql Server中的 SELECT语句的几个子句的用法: 如何解决SQLSERVER中的:"Timeout expire." 一个给分的问题!!!! 在表中加入中文数据时出现乱码 不太简单的搜索问题
Select Cast(33 As DateTime),Cast (366 As DateTime)你就会明白
select month(33),year(366)
等同于
select month('1900-02-03 00:00:00.000'),year('1901-01-02 00:00:00.000')
month将其自动转换为了datetime
那么什么情况下他不转换那?也就是说它在什么情况下是显示的1和1900呢?
帮助中写的是
month(),year()和day()的区别之一就是month()和year()对整型的诠释与day()不同
day()是累加
month(),year()是忽略,直接认为是1900.1.1
month中的数字必须大于等于0,小于等于30,
year中的数字必须大于等于0,小于等于364。select month(0),year(0)
select month(30),year(364)
就可以得到
1和1900
----------- -----------
2 1901因為一個月最多有31天吧
month(33)系統默認就從1月開始的。超過當1月的天數就會加1,所以顯示的就2一年有365天但有的時候不就,系統默認的就從1900年開始。
超過了1900的天數就會加1.所以1901
还是和day一样