以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  表达式求年月日,没问题!  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=1084)

--  作者:ybil
--  发布时间:2008/11/9 23:04:00
--  表达式求年月日,没问题!
虽然狐表提供可用于表达式的函数不多,但以它来求年月日,还是可行嘀!

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:表达式求年月日.table

[此贴子已经被作者于2008-11-10 17:41:13编辑过]

--  作者:程兴刚
--  发布时间:2008/11/10 1:03:00
--  
谢谢分享,先睹为快!
--  作者:gdtgl
--  发布时间:2008/11/10 1:10:00
--  

支持原创.用函数太熟了...学习

但我的认为:代码越简单,越快....

[此贴子已经被作者于2008-11-10 1:14:53编辑过]

--  作者:狐狸爸爸
--  发布时间:2008/11/10 8:17:00
--  
呵呵,这里还是用代码舒服点,这是典型的Y式风格的公式,非常人能写出来的。
不过求月、日、年的公式,非常奇妙,我已经据此更新了帮助文件。
[此贴子已经被作者于2008-11-10 9:44:19编辑过]

--  作者:kylin
--  发布时间:2008/11/10 15:08:00
--  
多谢,学习了
--  作者:czy
--  发布时间:2008/11/10 15:11:00
--  
Y式风格,经典。
可惜俺只有看的份,猴年马月咱也学不会。
--  作者:狐狸爸爸
--  发布时间:2008/11/10 15:24:00
--  
以下是引用czy在2008-11-10 15:11:00的发言:
Y式风格,经典。
可惜俺只有看的份,猴年马月咱也学不会。


哈哈,对于Y式风格,也要有所选择的,我就只用他的年、月、日计算公式,其余的看得头晕,我宁愿用代码了。


--  作者:ybil
--  发布时间:2008/11/10 16:57:00
--  
尽力简化一下吧:

非常【日满26则月进1】_年:
Convert(SUBSTRING(Convert([日期],\'System.String\'),1,4),\'System.Int16\')+IIF(SUBSTRING(Convert([日期],\'System.String\'),6,5) in (\'12-26\',\'12-27\',\'12-28\',\'12-29\',\'12-30\',\'12-31\'),1,0)

非常【日满26则月进1】_月:
IIF(SUBSTRING(Convert([日期],\'System.String\'),6,5) in (\'12-26\',\'12-27\',\'12-28\',\'12-29\',\'12-30\',\'12-31\'),1,Convert(SUBSTRING(Convert([日期],\'System.String\'),6,IIF(SUBSTRING(Convert([日期],\'System.String\'),7,1) = \'-\',1,2)),\'System.Int16\')+IIF(SUBSTRING(Convert([日期],\'System.String\'),8,3) in (\'-26\',\'-27\',\'-28\',\'-29\',\'-30\',\'-31\',\'26\',\'27\',\'28\',\'29\',\'30\',\'31\'),1,0))

月底日期:
SUBSTRING(Convert([日期],\'System.String\'),1,IIF(SUBSTRING(Convert([日期],\'System.String\'),7,1) = \'-\',7,8))+IIF(SUBSTRING(Convert([日期],\'System.String\'),6,IIF(SUBSTRING(Convert([日期],\'System.String\'),7,1) = \'-\',1,2))= 2,28+IIF(Convert(SUBSTRING(Convert([日期],\'System.String\'),1,4),\'System.Int16\') % 4 = 0, 1,0),IIF(Convert(SUBSTRING(Convert([日期],\'System.String\'),6,IIF(SUBSTRING(Convert([日期],\'System.String\'),7,1) = \'-\',1,2)),\'System.Int16\') In (1,3,5,7,8,10,12),31,30))

加n年日期:
Convert(SUBSTRING(Convert([日期],\'System.String\'),1,4),\'System.Int16\')+[n]+SUBSTRING(Convert([日期],\'System.String\'),5,15)
[此贴子已经被作者于2008-11-11 9:00:29编辑过]

--  作者:狐狸爸爸
--  发布时间:2008/11/10 17:08:00
--  

呵呵,你太厉害了!


--  作者:aaa
--  发布时间:2008/11/10 19:44:00
--  
厉害