`
收藏列表
标题 标签 来源
Python 获取IP地址 python
1.

>>>import socket

>>>hostname = socket.gethostname()
'OOooo-PC'

>>>ip = socket.gethostbyname(hostname)
>>>print ip
'172.8.4.16'

>>> ipList = socket.gethostbyname_ex(hostname)
>>> ipList
('OOooo-PC', [], ['172.8.4.16', '10.5.48.93'])

2.
>>> name = socket.getfqdn(socket.gethostname())
>>> name
'OOooo-PC'
C#常用代码 c# http://www.oschina.net/code/snippet_119226_5833
1. StreamWriter - 文件写入类
StreamWriter s = new StreamWriter(address + "/Menu.ini", true);
s.WriteLine(openFileDialog1.FileName);
s.Flush();
s.Close();

2. StreamReader - 文件读取类
StreamReader sr = new StreamReader(address + "/Menu.ini");
while (sr.Peek()>=0)
{
     string str = sr.ReadLine();
}
sr.Close();

3. Image - 图像类
Image p = Image.FromFile("/背景图片.jpg");
Form f = new Form(); // 创建MID窗口
f.MdiParent = this; // 设置父窗口
f.BackgroundImage = p; // 设置MDI窗口的背景图
f.Show(); // 显示MDI窗口

4. Bitmap - 位图类
// 创建位图, Bitmap类继承于Image类
Bitmap bit;
bit = new Bitmap("heart.bmp");
bit.MakeTransparent(Color.White); // 设置透明色

protected override void OnPaint(PaintEventArgs e)
{
// 在窗口上画图
e.Graphics.DrawImage((Image)bit, new Point(0, 0));
}

5. this.Opacity - 控件的不透明度
// 控制控件透明程度,很有用。

6. C#中导入Dll文件中的API
[System.Runtime.InteropServices.DllImportAttribute("user32.dll")]
public static extern bool FlashWindow(IntPtr handle, bool bInvert);

7. 隐藏标题栏
this.ControlBox = false;

8. 窗口始终处于最上面
this.TopMost = ture;

9. Screen - 桌面类
Screen.PrimaryScreen.WorkingArea.Height // 桌面的高
Screen.PrimaryScreen.WorkingArea.Width // 桌面的宽
Screen.PrimaryScreen.BitsPerPixel   // 桌面的位深


10. 基本绘图
Graphics graphics;
Pen myPen = new Pen(Color.Blue, 2);

// 画线
graphics = this.CreateGraphics();
graphics.DrawLine(myPen, 30, 60, 150, 60);

// 画矩形
graphics = this.CreateGraphics();
graphics.DrawRectangle(myPen, 30, 80, 120, 50);

// 画椭圆
graphics = this.CreateGraphics();
Rectangle myRectangle = new Rectangle(160, 70, 100, 60);
graphics.DrawEllipse(myPen, myRectangle);

11. 获得鼠标在窗口中的坐标
Cursor.Clip = new Rectangle(this.Location, this.Size);
label1.Text = "当前鼠标的位置为:" + Cursor.Position;

12. 判断键盘
protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
{
const int WM_KEYDOWN = 0x100;
const int WM_SYSKEYDOWN = 0x104;
string strInfo = string.Empty;
if ((msg.Msg == WM_KEYDOWN) || (msg.Msg == WM_SYSKEYDOWN))
{
   switch (keyData)
   {
    case Keys.Down:
    strInfo = "Down Key";
    break;
    case Keys.Up:
    strInfo = "Up Key";
    break;
    case Keys.Left:
    strInfo = "Left Key";
    break;
    case Keys.Right:
    strInfo = "Right Key";
    break;
    case Keys.Home:
    strInfo = "Home Key";
    break;
    case Keys.End:
    strInfo = "End Key";
    break;
   }
   MessageBox.Show(strInfo, "信息", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
return base.ProcessCmdKey(ref msg, keyData);
}

13. 控制远程计算机
//首先添加对 System.Management的引用
private void CloseComputer(string strname,string strpwd,string ip,string doinfo)
{
ConnectionOptions op = new ConnectionOptions ( ) ;
op.Username =strname;//''或者你的帐号(注意要有管理员的权限)
op.Password = strpwd; //''你的密码
ManagementScope scope = new ManagementScope("////" + ip + "//root//cimv2:Win32_Service", op);
try
{
   scope.Connect ( ) ;
   System.Management.ObjectQuery oq = new System.Management.ObjectQuery ( "SELECT * FROM Win32_OperatingSystem" ) ;
   ManagementObjectSearcher query1 = new ManagementObjectSearcher (scope,oq) ;
   //得到WMI控制
   ManagementObjectCollection queryCollection1 = query1.Get ( ) ;
   foreach ( ManagementObject mobj in queryCollection1 )
   {
    string [ ] str= {""} ;
    mobj.InvokeMethod(doinfo, str);
   }
   MessageBox.Show("操作成功");
}
catch(Exception ey)
{
   MessageBox.Show(ey.Message);
   //this.button1.PerformClick();
}
}

// 重启远程计算机
CloseComputer(this.textBox2.Text, this.textBox3.Text, this.textBox1.Text, "Reboot");

// 关闭远程计算机
CloseComputer(this.textBox2.Text, this.textBox3.Text, this.textBox1.Text, "Shutdown");

14. ping的使用
Ping PingInfo = new Ping();
PingOptions PingOpt = new PingOptions();
PingOpt.DontFragment = true;
string myInfo = "hyworkhyworkhyworkhyworkhyworkhywork";
byte[] bufferInfo = Encoding.ASCII.GetBytes(myInfo);
int TimeOut = 120;
PingReply reply = PingInfo.Send(this.textBox1.Text, TimeOut, bufferInfo, PingOpt);
if (reply.Status == IPStatus.Success)
{
this.textBox2.Text = reply.RoundtripTime.ToString();
this.textBox3.Text = reply.Options.Ttl.ToString();
this.textBox4.Text = (reply.Options.DontFragment ? "发生分段" : "没有发生分段");
this.textBox5.Text = reply.Buffer.Length.ToString();
}
else
{
MessageBox.Show("无法Ping通");
}

15. 检查文件是否存在
public int CheckFileExit(string ObjFilePath)
{
if (File.Exists(ObjFilePath))
   return 0;
else
   return -1;
}
[C#]代码 c#
一、windows应用程序最小化后,在状态条上如果有程序做某些操作,为了通知客户,如保让他闪动?

[System.Runtime.InteropServices.DllImport("user32.dll") ] 
static extern int FlashWindow (int hwnd, int bInvert);
private void button1_Click(object sender, System.EventArgs e)
{
FlashWindow(this.Handle.ToInt32(),1);
}

如果你要闪动多次可以放在timer中执行
FlashWindow(this.Handle.ToInt32(),0);//停止闪烁

二、WinFrom中怎么统计DataGrid中选中的行数

for(i=0;i<ds.Tables[0].Rows.Count;i++)
{
if(datagrid.IsSelected(i)==true)
{
MessageBox.Show("1");
}
}

三、检测主机是否有Sqlserver

检测主机是否有Sqlserver
        private bool GetSqlServerInfo(string strHostName)
        {
            bool bolConnectionInfo = false;
            SQLDMO.Application sap = new SQLDMO.ApplicationClass();
            SQLDMO.NameList servers = sap.ListAvailableSQLServers();
            string _strHostName = string.Empty;
            if (strHostName.ToUpper() == Dns.GetHostName().ToUpper())
            {
                _strHostName = "(local)";
            }
            else
            {
                _strHostName = strHostName;
            }

            for (int i = 0; i < servers.Count; i++)
            {
                object svr = servers.Item(i + 1);

                if (string.Equals(_strHostName, svr.ToString()))
                {
                    bolConnectionInfo = true;
                    break;
                }
            }
            return bolConnectionInfo;
        }

四、判断输入的是否是数字

// 名称:IsNumeric
// 功能:判断输入的是否是数字
// 参数:string oText:源文本
// 返回值: bool true:是 false:否

private static bool IsNumeric(string oText)
    {
        try
        {
            int var1 = Convert.ToInt32(oText);
            return true;
        }
        catch
        {
            return false;
        }
    }
使用python生成固定长度的随机字符串 python
from random import Random
def random_str(randomlength=8):
    str = ''
    chars = 'AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz0123456789'
    length = len(chars) - 1
    random = Random()
    for i in range(randomlength):
        str+=chars[random.randint(0, length)]
    return str
常用数据库语句 sql
常用语句:
show databases(显示现存数据库,注意是复数)
use design(使用数据库)
show tables(查看这个数据库下面的表)
desc studios(显示表的结构)
 
 
创建表:
CREATE TABLE Studios(name CHAR(20), city VARCHAR(50), state CHAR(2), revenue FLOAT)
 
指定主键和候选键:UNIQUE也是用来规范属性唯一
CREATE TABLE Studios (studio_id INTEGER, name CHAR(20), city VARCHAR(50), state  CHAR(2), PRIMARY KEY(studio_id), UNIQUE(name))
或:
CREATE TABLE Studios3 (studio_id INTEGER PRIMARY KEY, name CHAR(20) UNIQUE, city  VARCHAR(50), state CHAR(2))
CREATE TABLE test1 (id INT IDENTITY(1, 1) PRIMARY KEY, name VARCHAR(MAX), url VARCHAR(MAX));
 
建立外键:
CREATE TABLE Movies(movie_title VARCHAR(40),studio_id INTEGER REFERENCES Studios(studio_id)) 加入外键后要原来的Studios表中也有相应的studio_id才能插入
 
定义非空值:
CREATE TABLE Studios(studio_id INTEGER PRIMARY KEY, name CHAR(20) NOT NULL, city VARCHAR(50) NOT NULL, state CHAR(2) NOT NULL)
 
CHECK添加约束:
CREATE TABLE Movies(movie_titles VARCHAR(40) PRIMARY KEY, studio_id INTEGER, budget FLOAT CHECK(budget > 500000))
 
给约束命名:
CREATE TABLE Movies(movie_titles VARCHAR(40) PRIMARY KEY, studio_id INTEGER, budget FLOAT, constraint budget_constraint CHECK(budget > 500000))
 
设置默认值:
CREATE TABLE Movies(movie_title VARCHAR(40) NOT NULL, release_date DATE DEFAULT SYSDATE NULL, genre VARCHAR(20) DEFAULT ‘Comedy’ CHECK(genre IN(‘Horror’, ‘Comedy’, ‘Drama’)))
 
修改变结构添加列:
ALTER TABLE movies ADD author VARCHAR(20) not null
 
删除列:
ALTER TABLE movies DROP COLUMN author
 
修改列:
ALTER TABLE movies MODIFY author char(3) not null
 
INSERT语句(将属性补充完成):
INSERT INTO Studios(city, state, studio_id) VALUES(‘Burbank’,‘MPM’,2)
 
UPDATE语句:
UPDATE Studios SET city =‘New York’, state = ‘NY’WHERE studio_id = 1
 
DELETE语句:
DELETE FROM Studios WHERE state = ‘AK’
 
SELECT语句(最好也是将属性补充完整):
SELECT * FROM emp WHERE sal = ‘AAABAA’
SELECT empno, ename, sal, job FROM emp WHERE job = ‘SALESMAN’AND sal < 3000
 
字符串函数大小写转换upper,lower:
SELECT * FROM emp WHERE lower(job) = ‘salesman’ and sal < 3000
 
更改属性显示名称:
SELECT job AS l_job FROM emp WHERE low(job) = ‘salesman’ and sal < 3000
SELECT ename,sal AS ‘工资’,sal*1.5 AS ‘加班工资’FROM emp
 
运算符先后顺序(高到底顺序排列):
运算符
用法
()
括号
/ , * , - , +(左边大于右边)
算术运算符
AND, OR, NOT
布尔运算符
比较运算:
大于:> 小于:< 等于:= 不等于:<>
 
 
IN语句:
SELECT empno,ename,sal,job FROM WHERE job IN(‘CLERK’,‘MANAGER’)
 
BETWEEN语句:
SELECT empno,ename,sal,job FROM emp WHERE sal BETWEEN 2000 AND 3000
 
LIKE模糊查询,%为任意字符集都匹配,_它与单个字符相匹配:
SELECT empno,ename,sal,job FROM emp WHERE ename LIKE ‘_M%’
 
使用ORDER BY字句按照sal列升序(降序)排序:
SELECT ename,sal AS SALARY FROM emp WHERE sal < 3000 ORDER BY sal ASC(DESC)
SELECT ename, sal AS SALARY FROM emp WHERE sal < 3000 ORDER BY sal DESC, date ASC
 
DISTINCT去除重复值(例如查看所有不同的工种):
SELECT DISTINCT job,sal FROM emp
聚集函数
查询返回记录行数COUNT:
SELECT COUNT(*) FROM emp
计算某一列总和SUM:
SELECT SUM(sal) FROM emp
计算某一列平均数AVG:
SELECT AVG(sal) FROM emp
 
按组来分类GROUP BY:
SELECT depton, ename, count(*) FROM emp GROUP BY deptno
 
HAVING子句对查询结果分组之后进行筛选:
SELECT deptno, sum(sal) FROM emp GROUP BY deptno HAVING SUM(sal) < 1000
 
注意:
1.     WHERE不能放在GROUP BY之后
2.     WHERE中不能使用聚集函数
如:SELECT deptno, avg(sal) FROM emp WHERE sal > 2000 GROUP BY deptno
3.     HAVING与GROUP BY结合使用,要放到GROUP BY之后
4.     HAVING条件是聚集函数表达式
如:SELECT deptno, avg(sal) FROM emp GROUP BY deptno HAVING BY avg(sal) > 2000
5.     HAVING子句出现在ORDER BY子句之前,但是在GROUP BY子句之后
如:SELECT deptno, avg(sal) FROM emp GROUP BY deptno HAVING avg(sal) > 2000 order by sal
 
IN子查询(IN语句必须始终从单列返回值,指定多列(SELECT deptno, dname)会出错):
SELECT empno, ename FROM emp WHERE deptno (NOT) IN (SELECT deptno FROM dept WHERE dname = ‘SALES’)
 
嵌套子查询:
SELECT dname FROM dept WHERE deptno IN (SELECT deptno FROM emp WHERE sal > (SELECT AVG(sal) FROM emp))
 
多表联合查询:
SELECT emp.empno, emp.ename FROM emp, dept WHERE emp.deptno = dept.deptno and dept.dname = ‘SALES’
 
 
 
 
 
 
 
 
 
 
 
 
别人总结的常用SQL语句:
 
下列语句部分是Mssql语句,不可以在access中使用。 
  SQL分类:
  DDL—数据定义语言(CREATE,ALTER,DROP,DECLARE) 
  DML—数据操纵语言(SELECT,DELETE,UPDATE,INSERT) 
  DCL—数据控制语言(GRANT,REVOKE,COMMIT,ROLLBACK)
  首先,简要介绍基础语句:
  1、说明:创建数据库
CREATE DATABASE database-name
  2、说明:删除数据库
drop database dbname
  3、说明:备份sql server
  --- 创建 备份数据的 device
USE master
EXEC sp_addumpdevice ’disk’, ’testBack’, ’c:\mssql7backup\MyNwind_1.dat’
  --- 开始 备份
BACKUP DATABASE pubs TO testBack
  4、说明:创建新表
create table tabname(col1 type1 [not null] [primary key],col2 type2 [not null],..)
  根据已有的表创建新表:
A:create table tab_new like tab_old (使用旧表创建新表)
B:create table tab_new as select col1,col2… from tab_old definition only
  5、说明:
  删除新表:drop table tabname
  6、说明:
  增加一个列:Alter table tabname add column col type
  注:列增加后将不能删除。DB2中列加上后数据类型也不能改变,唯一能改变的是增加varchar类型的长度。
  7、说明:
  添加主键:Alter table tabname add primary key(col)
  说明:
  删除主键:Alter table tabname drop primary key(col)
  8、说明:
  创建索引:create [unique] index idxname on tabname(col….)
  删除索引:drop index idxname
  注:索引是不可更改的,想更改必须删除重新建。
  9、说明:
  创建视图:create view viewname as select statement
  删除视图:drop view viewname
10、说明:几个简单的基本的sql语句
  选择:select * from table1 where 范围
  插入:insert into table1(field1,field2) values(value1,value2)
  删除:delete from table1 where 范围
  更新:update table1 set field1=value1 where 范围
  查找:select * from table1 where field1 like ’%value1%’ ---like的语法很精妙,查资料!
  排序:select * from table1 order by field1,field2 [desc]
  总数:select count * as totalcount from table1
  求和:select sum(field1) as sumvalue from table1
  平均:select avg(field1) as avgvalue from table1
  最大:select max(field1) as maxvalue from table1
  最小:select min(field1) as minvalue from table1
  11、说明:几个高级查询运算词
  A: UNION 运算符
  UNION 运算符通过组合其他两个结果表(例如 TABLE1 和 TABLE2)并消去表中任何重复行而派生出一个结果表。当 ALL 随 UNION 一起使用时(即 UNION ALL),不消除重复行。两种情况下,派生表的每一行不是来自 TABLE1 就是来自 TABLE2。
  B: EXCEPT 运算符
  EXCEPT 运算符通过包括所有在 TABLE1 中但不在 TABLE2 中的行并消除所有重复行而派生出一个结果表。当 ALL 随 EXCEPT 一起使用时 (EXCEPT ALL),不消除重复行。
  C: INTERSECT 运算符
  INTERSECT 运算符通过只包括 TABLE1 和 TABLE2 中都有的行并消除所有重复行而派生出一个结果表。当 ALL 随 INTERSECT 一起使用时 (INTERSECT ALL),不消除重复行。
  注:使用运算词的几个查询结果行必须是一致的。
  12、说明:使用外连接
  A、left outer join:
  左外连接(左连接):结果集几包括连接表的匹配行,也包括左连接表的所有行。
SQL: select a.a, a.b, a.c, b.c, b.d, b.f from a LEFT OUT JOIN b ON a.a = b.c
  B:right outer join:
  右外连接(右连接):结果集既包括连接表的匹配连接行,也包括右连接表的所有行。
  C:full outer join:
  全外连接:不仅包括符号连接表的匹配行,还包括两个连接表中的所有记录。
  其次,大家来看一些不错的sql语句
  1、说明:复制表(只复制结构,源表名:a 新表名:b) (Access可用)
  法一:select * into b from a where 1<>1
  法二:select top 0 * into b from a
  2、说明:拷贝表(拷贝数据,源表名:a 目标表名:b) (Access可用)
insert into b(a, b, c) select d,e,f from b;
  3、说明:跨数据库之间表的拷贝(具体数据使用绝对路径) (Access可用)
insert into b(a, b, c) select d,e,f from b in ‘具体数据库’ where 条件
  例子:..from b in ’"&Server.MapPath(".")&"\data.mdb" &"’ where..
  4、说明:子查询(表名1:a 表名2:b)
select a,b,c from a where a IN (select d from b ) 或者: select a,b,c from a where a IN (1,2,3)
  5、说明:显示文章、提交人和最后回复时间
select a.title,a.username,b.adddate from table a,(select max(adddate) adddate from table where table.title=a.title) b
6、说明:外连接查询(表名1:a 表名2:b)
select a.a, a.b, a.c, b.c, b.d, b.f from a LEFT OUT JOIN b ON a.a = b.c
  7、说明:在线视图查询(表名1:a )
select * from (SELECT a,b,c FROM a) T where t.a > 1;
  8、说明:between的用法,between限制查询数据范围时包括了边界值,not between不包括
select * from table1 where time between time1 and time2
select a,b,c, from table1 where a not between 数值1 and 数值2
  9、说明:in 的使用方法
select * from table1 where a [not] in (‘值1’,’值2’,’值4’,’值6’)
  10、说明:两张关联表,删除主表中已经在副表中没有的信息
delete from table1 where not exists ( select * from table2 where table1.field1=table2.field1 )
  11、说明:四表联查问题:
select * from a left inner join b on a.a=b.b right inner join c on a.a=c.c inner join d on a.a=d.d where .....
  12、说明:日程安排提前五分钟提醒
SQL: select * from 日程安排 where datediff(’minute’,f开始时间,getdate())>5
  13、说明:一条sql 语句搞定数据库分页
select top 10 b.* from (select top 20 主键字段,排序字段 from 表名 order by 排序字段 desc) a,表名 b where b.主键字段 = a.主键字段 order by a.排序字段
  14、说明:前10条记录
select top 10 * form table1 where 范围
  15、说明:选择在每一组b值相同的数据中对应的a最大的记录的所有信息(类似这样的用法可以用于论坛每月排行榜,每月热销产品分析,按科目成绩排名,等等.)
select a,b,c from tablename ta where a=(select max(a) from tablename tb where tb.b=ta.b)
  16、说明:包括所有在 TableA 中但不在 TableB和TableC 中的行并消除所有重复行而派生出一个结果表
(select a from tableA ) except (select a from tableB) except (select a from tableC)
  17、说明:随机取出10条数据
select top 10 * from tablename order by newid()
  18、说明:随机选择记录
select newid()
  19、说明:删除重复记录
Delete from tablename where id not in (select max(id) from tablename group by col1,col2,...)
  20、说明:列出数据库里所有的表名
select name from sysobjects where type=’U’
21、说明:列出表里的所有的
select name from syscolumns where id=object_id(’TableName’)
  22、说明:列示type、vender、pcs字段,以type字段排列,case可以方便地实现多重选择,类似select 中的case。
select type,sum(case vender when ’A’ then pcs else 0 end),sum(case vender when ’C’ then pcs else 0 end),sum(case vender when ’B’ then pcs else 0 end) FROM tablename group by type
  显示结果:
type    vender pcs
电脑 A 1
电脑 A 1
光盘 B 2
光盘 A 2
手机 B 3
手机 C 3
  23、说明:初始化表table1
TRUNCATE TABLE table1
  24、说明:选择从10到15的记录
select top 5 * from (select top 15 * from table order by id asc) table_别名 order by id desc
随机选择数据库记录的方法(使用Randomize函数,通过SQL语句实现)
  对存储在数据库中的数据来说,随机数特性能给出上面的效果,但它们可能太慢了些。你不能要求ASP“找个随机数”然后打印出来。实际上常见的解决方案是建立如下所示的循环:
Randomize 
RNumber = Int(Rnd*499) +1 
 
While Not objRec.EOF 
If objRec("ID") = RNumber THEN 
... 这里是执行脚本 ... 
end if 
objRec.MoveNext 
Wend
  这很容易理解。首先,你取出1到500范围之内的一个随机数(假设500就是数据库内记录的总数)。然后,你遍历每一记录来测试ID 的值、检查其是否匹配RNumber。满足条件的话就执行由THEN 关键字开始的那一块代码。假如你的RNumber 等于495,那么要循环一遍数据库花的时间可就长了。虽然500这个数字看起来大了些,但相比更为稳固的企业解决方案这还是个小型数据库了,后者通常在一个数据库内就包含了成千上万条记录。这时候不就死定了?
  采用SQL,你就可以很快地找出准确的记录并且打开一个只包含该记录的recordset,如下所示:
Randomize 
RNumber = Int(Rnd*499) + 1 
 
SQL = "SELECT * FROM Customers WHERE ID = " & RNumber 
 
set objRec = ObjConn.Execute(SQL) 
Response.WriteRNumber & " = " & objRec("ID") & " " & objRec("c_email")
  不必写出RNumber 和ID,你只需要检查匹配情况即可。只要你对以上代码的工作满意,你自可按需操作“随机”记录。Recordset没有包含其他内容,因此你很快就能找到你需要的记录这样就大大降低了处理时间。
再谈随机数
  现在你下定决心要榨干Random 函数的最后一滴油,那么你可能会一次取出多条随机记录或者想采用一定随机范围内的记录。把上面的标准Random 示例扩展一下就可以用SQL应对上面两种情况了。
  为了取出几条随机选择的记录并存放在同一recordset内,你可以存储三个随机数,然后查询数据库获得匹配这些数字的记录:
  SQL = "SELECT * FROM Customers WHERE ID = " & RNumber & " OR ID = " & RNumber2 & " OR ID = " & RNumber3
  假如你想选出10条记录(也许是每次页面装载时的10条链接的列表),你可以用BETWEEN 或者数学等式选出第一条记录和适当数量的递增记录。这一操作可以通过好几种方式来完成,但是 SELECT 语句只显示一种可能(这里的ID 是自动生成的号码): 
SQL = "SELECT * FROM Customers WHERE ID BETWEEN " & RNumber & " AND " & RNumber & "+ 9"
  注意:以上代码的执行目的不是检查数据库内是否有9条并发记录。
  随机读取若干条记录,测试过
Access语法:SELECT top 10 * From 表名 ORDER BY Rnd(id)
Sql server:select top n * from 表名 order by newid()
mysql select * From 表名 Order By rand() Limit n
  Access左连接语法(最近开发要用左连接,Access帮助什么都没有,网上没有Access的SQL说明,只有自己测试, 现在记下以备后查)
  语法 select table1.fd1,table1,fd2,table2.fd2 From table1 left join table2 on table1.fd1,table2.fd1 where ...
  使用SQL语句 用...代替过长的字符串显示
  语法:
  SQL数据库:select case when len(field)>10 then left(field,10)+’...’ else field end as news_name,news_id from tablename
  Access数据库:SELECT iif(len(field)>2,left(field,2)+’...’,field) FROM tablename;
  Conn.Execute说明
  Execute方法
  该方法用于执行SQL语句。根据SQL语句执行后是否返回记录集,该方法的使用格式分为以下两种:
  1.执行SQL查询语句时,将返回查询得到的记录集。用法为:
  Set 对象变量名=连接对象.Execute("SQL 查询语言")
  Execute方法调用后,会自动创建记录集对象,并将查询结果存储在该记录对象中,通过Set方法,将记录集赋给指定的对象保存,以后对象变量就代表了该记录集对象。
  2.执行SQL的操作性语言时,没有记录集的返回。此时用法为:
  连接对象.Execute "SQL 操作性语句" [, RecordAffected][, Option]
  ·RecordAffected 为可选项,此出可放置一个变量,SQL语句执行后,所生效的记录数会自动保存到该变量中。通过访问该变量,就可知道SQL语句队多少条记录进行了操作。
  ·Option 可选项,该参数的取值通常为adCMDText,它用于告诉ADO,应该将Execute方法之后的第一个字符解释为命令文本。通过指定该参数,可使执行更高效。
  ·BeginTrans、RollbackTrans、CommitTrans方法
  这三个方法是连接对象提供的用于事务处理的方法。BeginTrans用于开始一个事物;RollbackTrans用于回滚事务;CommitTrans用于提交所有的事务处理结果,即确认事务的处理。
  事务处理可以将一组操作视为一个整体,只有全部语句都成功执行后,事务处理才算成功;若其中有一个语句执行失败,则整个处理就算失败,并恢复到处里前的状态。
  BeginTrans和CommitTrans用于标记事务的开始和结束,在这两个之间的语句,就是作为事务处理的语句。判断事务处理是否成功,可通过连接对象的Error集合来实现,若Error集合的成员个数不为0,则说明有错误发生,事务处理失败。Error集合中的每一个Error对象,代表一个错误信息。
SQL语句大全精要
2006/10/26 13:46
DELETE语句 
DELETE语句:用于创建一个删除查询,可从列在 FROM 子句之中的一个或多个表中删除记录,且该子句满足 WHERE 子句中的条件,可以使用DELETE删除多个记录。
语法:DELETE [table.*] FROM table WHERE criteria
语法:DELETE * FROM table WHERE criteria=’查询的字’
说明:table参数用于指定从其中删除记录的表的名称。
criteria参数为一个表达式,用于指定哪些记录应该被删除的表达式。
可以使用 Execute 方法与一个 DROP 语句从数据库中放弃整个表。不过,若用这种方法删除表,将会失去表的结构。不同的是当使用 DELETE,只有数据会被删除;表的结构以及表的所有属性仍然保留,例如字段属性及索引。
QQ291911320
UPDATE 
有关UPDATE,急!!!!!!!!!!!
在ORACLE数据库中
表 A ( ID ,FIRSTNAME,LASTNAME ) 
表 B( ID,LASTNAME)
表 A 中原来ID,FIRSTNAME两个字段的数据是完整的
表 B中原来ID,LASTNAME两个字段的数据是完整的
现在要把表 B中的LASTNAME字段的相应的数据填入到A表中LASTNAME相应的位置。两个表中的ID字段是相互关联的。
先谢谢了!!!!
update a set a.lastname=(select b.lastname from b where a.id=b.id)

  掌握SQL四条最基本的数据操作语句:Insert,Select,Update和Delete。
   练掌握SQL是数据库用户的宝贵财 富。在本文中,我们将引导你掌握四条最基本的数据操作语句—SQL的核心功能—来依次介绍比较操作符、选择断言以及三值逻辑。当你完成这些学习后,显然你已经开始算是精通SQL了。
  在我们开始之前,先使用CREATE TABLE语句来创建一个表(如图1所示)。DDL语句对数据库对象如表、列和视进行定义。它们并不对表中的行进行处理,这是因为DDL语句并不处理数据库中实际的数据。这些工作由另一类SQL语句—数据操作语言(DML)语句进行处理。
  SQL中有四种基本的DML操作:INSERT,SELECT,UPDATE和DELETE。由于这是大多数SQL用户经常用到的,我们有必要在此对它们进行一一说明。在图1中我们给出了一个名为EMPLOYEES的表。其中的每一行对应一个特定的雇员记录。请熟悉这张表,我们在后面的例子中将要用到它。
通用分页存储过程 sql
/*通用分页存储过程*/
USE HotelManagementSystem
GO
IF EXISTS(SELECT * FROM sys.objects WHERE NAME='up_GetPageOfRecords')
DROP PROCEDURE up_GetPageOfRecords
GO
--创建存储过程
CREATE PROCEDURE up_GetPageOfRecords
@pageSize int = 20, --分页大小
@currentPage int , --第几页
@columns varchar(1000) = '*', --需要得到的字段  
@tableName varchar(100), --需要查询的表   
@condition varchar(1000) = '', --查询条件, 不用加where关键字
@ascColumn varchar(100) = '', --排序的字段名 (即 order by column asc/desc)
@bitOrderType bit = 0, --排序的类型 (0为升序,1为降序)
@pkColumn varchar(50) = '' --主键名称

AS
BEGIN --存储过程开始
DECLARE @strTemp varchar(300)
DECLARE @strSql varchar(5000) --该存储过程最后执行的语句
DECLARE @strOrderType varchar(1000) --排序类型语句 (order by column asc或者order by column desc)

BEGIN
IF @bitOrderType = 1	 --降序
BEGIN
SET @strOrderType = ' ORDER BY '+@ascColumn+' DESC'
SET @strTemp = '<(SELECT min'
END
ELSE	 --升序
BEGIN
SET @strOrderType = ' ORDER BY '+@ascColumn+' ASC'
SET @strTemp = '>(SELECT max'
END

IF @currentPage = 1	 --第一页
BEGIN
IF @condition != ''
SET @strSql = 'SELECT TOP '+STR(@pageSize)+' '+@columns+' FROM '+@tableName+
' WHERE '+@condition+@strOrderType
ELSE
SET @strSql = 'SELECT TOP '+STR(@pageSize)+' '+@columns+' FROM '+@tableName+@strOrderType
END

ELSE	 -- 其他页
BEGIN
IF @condition !=''
SET @strSql = 'SELECT TOP '+STR(@pageSize)+' '+@columns+' FROM '+@tableName+
' WHERE '+@condition+' AND '+@pkColumn+@strTemp+'('+@pkColumn+')'+' FROM (SELECT TOP '+STR((@currentPage-1)*@pageSize)+
' '+@pkColumn+' FROM '+@tableName+@strOrderType+') AS TabTemp)'+@strOrderType
ELSE
SET @strSql = 'SELECT TOP '+STR(@pageSize)+' '+@columns+' FROM '+@tableName+
' WHERE '+@pkColumn+@strTemp+'('+@pkColumn+')'+' FROM (SELECT TOP '+STR((@currentPage-1)*@pageSize)+' '+@pkColumn+
' FROM '+@tableName+@strOrderType+') AS TabTemp)'+@strOrderType
END

END
EXEC (@strSql)
END
ip各段内容提取,类似有3或4段字串通过一特殊字符连接的字串提取 sql
declare @a varchar(50)
set @a='192.168.1.123'
SELECT PARSENAME(@a,1),PARSENAME(@a,2),PARSENAME(@a,3),PARSENAME(@a,4)
set @a='100,200,300'
SELECT PARSENAME(replace(@a,',','.'),1)高,PARSENAME(replace(@a,',','.'),2)宽
,PARSENAME(replace(@a,',','.'),3)长
不足5位数补零的方法 c#
public string getNumberString(int n)
{
  if(n.ToString().Length<5)
  {
  return (1000000+n).ToString().SubString(1);
  }
  return n.ToString();
}
精妙SQL语句 sql
精妙SQL语句

明:复制表(只复制结构,源表名:a 新表名:b)  
SQL: select * into b from a where 1<>1  

说明:拷贝表(拷贝数据,源表名:a 目标表名:b)  
SQL: insert into b(a, b, c) select d,e,f from b;  

说明:显示文章、提交人和最后回复时间  
SQL: select a.title,a.username,b.adddate from table a,(select max(adddate) adddate from table where table.title=a.title) b  

说明:外连接查询(表名1:a 表名2:b)  
SQL: select a.a, a.b, a.c, b.c, b.d, b.f from a LEFT OUT JOIN b ON a.a = b.c  

说明:日程安排提前五分钟提醒  
SQL: select * from 日程安排 where datediff(<|>minute<|>,f开始时间,getdate())>5  


说明:两张关联表,删除主表中已经在副表中没有的信息  
SQL:  
delete from info where not exists ( select * from infobz where info.infid=infobz.infid )  

说明:--  
SQL:  
SELECT A.NUM, A.NAME, B.UPD_DATE, B.PREV_UPD_DATE  
FROM TABLE1,  
(SELECT X.NUM, X.UPD_DATE, Y.UPD_DATE PREV_UPD_DATE  
FROM (SELECT NUM, UPD_DATE, INBOUND_QTY, STOCK_ONHAND  
FROM TABLE2  
WHERE TO_CHAR(UPD_DATE,<|>YYYY/MM<|>) = TO_CHAR(SYSDATE, <|>YYYY/MM<|>)) X,  
(SELECT NUM, UPD_DATE, STOCK_ONHAND  
FROM TABLE2  
WHERE TO_CHAR(UPD_DATE,<|>YYYY/MM<|>) =  
TO_CHAR(TO_DATE(TO_CHAR(SYSDATE, <|>YYYY/MM<|>) || <|>/01<|>,<|>YYYY/MM/DD<|>) - 1, <|>YYYY/MM<|>) ) Y,  
WHERE X.NUM = Y.NUM (+)  
AND X.INBOUND_QTY + NVL(Y.STOCK_ONHAND,0) <> X.STOCK_ONHAND ) B  
WHERE A.NUM = B.NUM  

说明:--  
SQL:  
select * from studentinfo where not exists(select * from student where studentinfo.id=student.id) and 系名称=<|>"&strdepartmentname&"<|> and 专业名称=<|>"&strprofessionname&"<|> order by 性别,生源地,高考总成绩  

说明:  
从数据库中去一年的各单位电话费统计(电话费定额贺电化肥清单两个表来源)  
SQL:  
SELECT a.userper, a.tel, a.standfee, TO_CHAR(a.telfeedate, <|>yyyy<|>) AS telyear,  
SUM(decode(TO_CHAR(a.telfeedate, <|>mm<|>), <|>01<|>, a.factration)) AS JAN,  
SUM(decode(TO_CHAR(a.telfeedate, <|>mm<|>), <|>02<|>, a.factration)) AS FRI,  
SUM(decode(TO_CHAR(a.telfeedate, <|>mm<|>), <|>03<|>, a.factration)) AS MAR,  
SUM(decode(TO_CHAR(a.telfeedate, <|>mm<|>), <|>04<|>, a.factration)) AS APR,  
SUM(decode(TO_CHAR(a.telfeedate, <|>mm<|>), <|>05<|>, a.factration)) AS MAY,  
SUM(decode(TO_CHAR(a.telfeedate, <|>mm<|>), <|>06<|>, a.factration)) AS JUE,  
SUM(decode(TO_CHAR(a.telfeedate, <|>mm<|>), <|>07<|>, a.factration)) AS JUL,  
SUM(decode(TO_CHAR(a.telfeedate, <|>mm<|>), <|>08<|>, a.factration)) AS AGU,  
SUM(decode(TO_CHAR(a.telfeedate, <|>mm<|>), <|>09<|>, a.factration)) AS SEP,  
SUM(decode(TO_CHAR(a.telfeedate, <|>mm<|>), <|>10<|>, a.factration)) AS OCT,  
SUM(decode(TO_CHAR(a.telfeedate, <|>mm<|>), <|>11<|>, a.factration)) AS NOV,  
SUM(decode(TO_CHAR(a.telfeedate, <|>mm<|>), <|>12<|>, a.factration)) AS DEC  
FROM (SELECT a.userper, a.tel, a.standfee, b.telfeedate, b.factration  
FROM TELFEESTAND a, TELFEE b  
WHERE a.tel = b.telfax) a  
GROUP BY a.userper, a.tel, a.standfee, TO_CHAR(a.telfeedate, <|>yyyy<|>)  

说明:四表联查问题:  
SQL: select * from a left inner join b on a.a=b.b right inner join c on a.a=c.c inner join d on a.a=d.d where .....  

说明:得到表中最小的未使用的ID号  
SQL:  
SELECT (CASE WHEN EXISTS(SELECT * FROM Handle b WHERE b.HandleID = 1) THEN MIN(HandleID) + 1 ELSE 1 END) as HandleID  
FROM Handle  
WHERE NOT HandleID IN (SELECT a.HandleID - 1 FROM Handle a)
递归删除父节点及所有子节点 sql
--递归删除父节点及所有子节点
create table tb(Id int, ParentId int, Name varchar(5))
insert into tb select 1, 0, 'a1' 
union all select 2,2, 'a2' 
union all select 14, 1, 'b11' 
union all select 15, 1, 'b12' 
union all select 16, 14, 'c13' 
union all select 17, 14, 'c14'
union all select 104,17,'d15'
go
WITH temptab(id, parentid, name) AS
   (    SELECT root.id, root.parentid, root.name
            FROM tb root
            WHERE id=1
     UNION ALL
        SELECT sub.id, sub.parentid, sub.name
            FROM tb sub, temptab super
            WHERE sub.parentid = super.id
   )
delete from tb where id in(
select id from temptab
)
select * from tb
go 
drop table tb 
/*
Id          ParentId    Name
----------- ----------- -----
2           2           a2
如果碰到日志文件过大的问题,用SHIRNK DATABASE, TRUNCATE LOG FILE不是很有效时,可以考虑试下下面的脚本 sql
/* 本文由微软新闻组摘录下来的。一段非常有用的脚本。
如果碰到日志文件过大的问题,用SHIRNK DATABASE, TRUNCATE LOG FILE不是很有效时,可以考虑试下下面的脚本。把代码COPY到查询分析器里,然后修改其中的3个参数(数据库名,日志文件名,和目标日志文件的大小),运行即可
*/
----------------------------------------------------------------------------------
SET NOCOUNT ON
DECLARE @LogicalFileName sysname,         --日志文件名
@MaxMinutes INT,                          --允许此脚本执行的最长时间
@NewSize INT                              --目标日志文件的大小


USE CRM                                   -- 要操作的数据库名

SELECT @LogicalFileName = 'CRM_LOG', -- 日志文件名

@MaxMinutes = 10, -- Limit on time allowed to wrap log.

@NewSize = 1 -- 想要收缩到的目标大小(单位M),此处标记收缩到1M

DECLARE @OriginalSize int

SELECT @OriginalSize = size
FROM sysfiles
WHERE name = @LogicalFileName

SELECT 'Original Size of ' + db_name() + ' LOG is ' +
CONVERT(VARCHAR(30),@OriginalSize) + ' 8K pages or ' +
CONVERT(VARCHAR(30),(@OriginalSize*8/1024)) + 'MB'
FROM sysfiles
WHERE name = @LogicalFileName

CREATE TABLE DummyTrans(DummyColumn char (8000) not null)


DECLARE @Counter INT,
@StartTime DATETIME,
@TruncLog VARCHAR(255)

SELECT @StartTime = GETDATE(),
@TruncLog = 'BACKUP LOG ' + db_name() + ' WITH TRUNCATE_ONLY'

DBCC SHRINKFILE (@LogicalFileName, @NewSize)

EXEC (@TruncLog)

-- Wrap the log if necessary.
WHILE @MaxMinutes > DATEDIFF (mi, @StartTime, GETDATE()) -- time has not expired
AND @OriginalSize = (SELECT size FROM sysfiles WHERE name =
@LogicalFileName)
AND (@OriginalSize * 8 /1024) > @NewSize

BEGIN -- Outer loop.
    SELECT @Counter = 0

    WHILE ((@Counter < @OriginalSize / 16) AND (@Counter < 50000))
        BEGIN -- update
            INSERT DummyTrans VALUES ('Fill Log')
            DELETE DummyTrans
            SELECT @Counter = @Counter + 1
        END

    EXEC (@TruncLog)

END

SELECT 'Final Size of ' + db_name() + ' LOG is ' +
CONVERT(VARCHAR(30),size) + ' 8K pages or ' +
CONVERT(VARCHAR(30),(size*8/1024)) + 'MB'
FROM sysfiles
WHERE name = @LogicalFileName

DROP TABLE DummyTrans

SET NOCOUNT OFF

----------------------------------------------------------------------------
分解字符串并查询相关数据 sql
/*
标题:分解字符串并查询相关数据
作者:爱新觉罗.毓华(十八年风雨,守得冰山雪莲花开) 
时间:2008-03-18
地点:广东深圳
说明:通过使用函数等方法分解字符串查询相关数据。

问题:通过分解一个带某种符号分隔的字符串在数据库中查找相关数据。
例如 @str = '1,2,3',查询下表得到记录1,4,5,6
ID TypeID
1  1,2,3,4,5,6,7,8,9,10,11,12
2  2,3 
3  3,7,8,9 
4  2,6 
5  4,5
6  6,7 
*/
-----------------------------
create table tb (ID int , TypeID varchar(30)) 
insert into tb values(1 , '1,2,3,4,5,6,7,8,9,10,11,12') 
insert into tb values(2 , '2,3') 
insert into tb values(3 , '3,7,8,9') 
insert into tb values(4 , '2,6') 
insert into tb values(5 , '4,5')
insert into tb values(6 , '6,7')
go
-----------------------------
--如果仅仅是一个,如@str = '1'.
declare @str as varchar(30)
set @str = '1'
select * from tb where charindex(',' + @str + ',' , ',' + TypeID + ',') > 0
select * from tb where ',' + TypeID + ',' like '%,' + @str + ',%'
/*
ID          TypeID                         
----------- ------------------------------ 
1           1,2,3,4,5,6,7,8,9,10,11,12
(所影响的行数为 1 行)
*/

-----------------------------
--如果包含两个,如@str = '1,2'.
declare @str as varchar(30)
set @str = '1,2'
select * from tb where charindex(',' + left(@str , charindex(',' , @str) - 1) + ',' , ',' + typeid + ',') > 0 or 
  charindex(',' + substring(@str , charindex(',' , @str) + 1 , len(@str)) + ',' , ',' + typeid + ',') > 0
select * from tb where ',' + typeid + ',' like '%,' + left(@str , charindex(',' , @str) - 1) + ',%' or 
  ',' + typeid + ',' like '%,' + substring(@str , charindex(',' , @str) + 1 , len(@str)) + ',%'
/*
ID          TypeID                         
----------- ------------------------------ 
1           1,2,3,4,5,6,7,8,9,10,11,12
2           2,3
4           2,6
(所影响的行数为 3 行)
*/

-------------------------------------------
--如果包含三个或四个,用PARSENAME函数来处理.
declare @str as varchar(30)
set @str = '1,2,3,4'
select * from tb where 
  charindex(',' + parsename(replace(@str , ',' , '.') , 4) + ',' , ',' + typeid + ',') > 0 or
  charindex(',' + parsename(replace(@str , ',' , '.') , 3) + ',' , ',' + typeid + ',') > 0 or
  charindex(',' + parsename(replace(@str , ',' , '.') , 2) + ',' , ',' + typeid + ',') > 0 or
  charindex(',' + parsename(replace(@str , ',' , '.') , 1) + ',' , ',' + typeid + ',') > 0 
select * from tb where 
  ',' + typeid + ',' like '%,' + parsename(replace(@str , ',' , '.') , 4) + ',%' or
  ',' + typeid + ',' like '%,' + parsename(replace(@str , ',' , '.') , 3) + ',%' or
  ',' + typeid + ',' like '%,' + parsename(replace(@str , ',' , '.') , 2) + ',%' or
  ',' + typeid + ',' like '%,' + parsename(replace(@str , ',' , '.') , 1) + ',%'
/*
ID          TypeID                         
----------- ------------------------------ 
1           1,2,3,4,5,6,7,8,9,10,11,12
2           2,3
3           3,7,8,9
4           2,6
5           4,5
(所影响的行数为 5 行)
*/

---------------------------------------
--如果超过四个,则只能使用函数或动态SQL来分解并查询数据。
/*
名称:fn_split函数.
功能:实现字符串分隔功能的函数
*/
create function dbo.fn_split(@inputstr varchar(8000), @seprator varchar(10))
returns @temp table (a varchar(200))
as 
begin
  declare @i int
  set @inputstr = rtrim(ltrim(@inputstr))
  set @i = charindex(@seprator , @inputstr)
  while @i >= 1
  begin
    insert @temp values(left(@inputstr , @i - 1))
    set @inputstr = substring(@inputstr , @i + 1 , len(@inputstr) - @i)
    set @i = charindex(@seprator , @inputstr)
  end
  if @inputstr <> '\'
  insert @temp values(@inputstr)
  return 
end
go

--调用
declare @str as varchar(30)
set @str = '1,2,3,4,5'

select distinct m.* from tb m,
(select * from dbo.fn_split(@str,',')) n
where charindex(',' + n.a + ',' , ',' + m.typeid + ',') > 0

drop table tb
drop function dbo.fn_split 

/*
ID          TypeID                         
----------- ------------------------------ 
1           1,2,3,4,5,6,7,8,9,10,11,12
2           2,3
3           3,7,8,9
4           2,6
5           4,5
(所影响的行数为 5 行)
*/

------------------------------------------
--使用动态SQL的语句。
declare @str varchar(200)
declare @sql as varchar(1000)
set @str = '1,2,3,4,5'
set @sql = 'select ''' + replace(@str , ',' , ''' as id union all select ''')
set @sql = @sql + ''''
set @sql = 'select distinct a.* from tb a , (' + @sql + ') b where charindex(' + ''','' + b.id + ' + ''',''' + ' , ' + ''','' + a.typeid + ' + ''',''' + ') > 0 '
exec (@sql)
/*
ID          TypeID                         
----------- ------------------------------ 
1           1,2,3,4,5,6,7,8,9,10,11,12
2           2,3
3           3,7,8,9
4           2,6
5           4,5
(所影响的行数为 5 行)
*/
日期的推算:(转邹老大的代码) sql
日期的推算:(转邹老大的代码) 
DECLARE @dt datetime 
SET @dt=GETDATE() 

DECLARE @number int 
SET @number=3 

--1.指定日期该年的第一天或最后一天 
--A. 年的第一天 
SELECT CONVERT(char(5),@dt,120)+ '1-1 ' 

--B. 年的最后一天 
SELECT CONVERT(char(5),@dt,120)+ '12-31 ' 


--2.指定日期所在季度的第一天或最后一天 
--A. 季度的第一天 
SELECT CONVERT(datetime, 
CONVERT(char(8), 
DATEADD(Month, 
DATEPART(Quarter,@dt)*3-Month(@dt)-2, 
@dt), 
120)+ '1 ') 

--B. 季度的最后一天(CASE判断法) 
SELECT CONVERT(datetime, 
CONVERT(char(8), 
DATEADD(Month, 
DATEPART(Quarter,@dt)*3-Month(@dt), 
@dt), 
120) 
+CASE WHEN DATEPART(Quarter,@dt) in(1,4) 
THEN  '31 'ELSE  '30 ' END) 

--C. 季度的最后一天(直接推算法) 
SELECT DATEADD(Day,-1, 
CONVERT(char(8), 
DATEADD(Month, 
1+DATEPART(Quarter,@dt)*3-Month(@dt), 
@dt), 
120)+ '1 ') 


--3.指定日期所在月份的第一天或最后一天 
--A. 月的第一天 
SELECT CONVERT(datetime,CONVERT(char(8),@dt,120)+ '1 ') 

--B. 月的最后一天 
SELECT DATEADD(Day,-1,CONVERT(char(8),DATEADD(Month,1,@dt),120)+ '1 ') 

--C. 月的最后一天(容易使用的错误方法) 
SELECT DATEADD(Month,1,DATEADD(Day,-DAY(@dt),@dt)) 


--4.指定日期所在周的任意一天 
SELECT DATEADD(Day,@number-DATEPART(Weekday,@dt),@dt) 


--5.指定日期所在周的任意星期几 
--A.  星期天做为一周的第1天 
SELECT DATEADD(Day,@number-(DATEPART(Weekday,@dt)+@@DATEFIRST-1)%7,@dt) 

--B.  星期一做为一周的第1天 
SELECT DATEADD(Day,@number-(DATEPART(Weekday,@dt)+@@DATEFIRST-2)%7-1,@dt) 
分拆列值 sql
分拆列值

原著:邹建
改编:爱新觉罗.毓华(十八年风雨,守得冰山雪莲花开) 2007-12-16 广东深圳

有表tb, 如下:
id value
----------- -----------
1 aa,bb
2 aaa,bbb,ccc
欲按id,分拆value列, 分拆后结果如下:
id value
----------- --------
1 aa
1 bb
2 aaa
2 bbb
2 ccc

1. 旧的解决方法(sql server 2000)
SELECT TOP 8000 id = IDENTITY(int, 1, 1) INTO # FROM syscolumns a, syscolumns b  

SELECT A.id, SUBSTRING(A.[values], B.id, CHARINDEX(',', A.[values] + ',', B.id) - B.id)
FROM tb A, # B
WHERE SUBSTRING(',' + A.[values], B.id, 1) = ','

DROP TABLE #

2. 新的解决方法(sql server 2005)  

create table tb(id int,value varchar(30))
insert into tb values(1,'aa,bb')
insert into tb values(2,'aaa,bbb,ccc')
go
SELECT A.id, B.value
FROM(
  SELECT id, [value] = CONVERT(xml,'<root><v>' + REPLACE([value], ',', '</v><v>') + '</v></root>') FROM tb
)A
OUTER APPLY(
  SELECT value = N.v.value('.', 'varchar(100)') FROM A.[value].nodes('/root/v') N(v)
)B

DROP TABLE tb

/*
id value
----------- ------------------------------
1 aa
1 bb
2 aaa
2 bbb
2 ccc

(5 行受影响)
*/
合并列值 sql
合并列值
原著:邹建
改编:爱新觉罗.毓华(十八年风雨,守得冰山雪莲花开) 2007-12-16 广东深圳

表结构,数据如下:
id value
----- ------
1 aa
1 bb
2 aaa
2 bbb
2 ccc

需要得到结果:
id values
------ -----------
1 aa,bb
2 aaa,bbb,ccc
即:group by id, 求 value 的和(字符串相加)

1. 旧的解决方法(在sql server 2000中只能用函数解决。)
--1. 创建处理函数
create table tb(id int, value varchar(10))
insert into tb values(1, 'aa')
insert into tb values(1, 'bb')
insert into tb values(2, 'aaa')
insert into tb values(2, 'bbb')
insert into tb values(2, 'ccc')
go

CREATE FUNCTION dbo.f_str(@id int)
RETURNS varchar(8000)
AS
BEGIN
  DECLARE @r varchar(8000)
  SET @r = ''
  SELECT @r = @r + ',' + value FROM tb WHERE id=@id
  RETURN STUFF(@r, 1, 1, '')
END
GO

-- 调用函数
SELECt id, value = dbo.f_str(id) FROM tb GROUP BY id

drop table tb
drop function dbo.f_str

/*
id value   
----------- -----------
1 aa,bb
2 aaa,bbb,ccc
(所影响的行数为 2 行)
*/

--2、另外一种函数.
create table tb(id int, value varchar(10))
insert into tb values(1, 'aa')
insert into tb values(1, 'bb')
insert into tb values(2, 'aaa')
insert into tb values(2, 'bbb')
insert into tb values(2, 'ccc')
go

--创建一个合并的函数
create function f_hb(@id int)
returns varchar(8000)
as
begin
  declare @str varchar(8000)
  set @str = ''
  select @str = @str + ',' + cast(value as varchar) from tb where id = @id
  set @str = right(@str , len(@str) - 1)
  return(@str)
End
go

--调用自定义函数得到结果:
select distinct id ,dbo.f_hb(id) as value from tb

drop table tb
drop function dbo.f_hb

/*
id value   
----------- -----------
1 aa,bb
2 aaa,bbb,ccc
(所影响的行数为 2 行)
*/

2. 新的解决方法(在sql server 2005中用OUTER APPLY等解决。)
create table tb(id int, value varchar(10))
insert into tb values(1, 'aa')
insert into tb values(1, 'bb')
insert into tb values(2, 'aaa')
insert into tb values(2, 'bbb')
insert into tb values(2, 'ccc')
go
-- 查询处理
SELECT * FROM(SELECT DISTINCT id FROM tb)A OUTER APPLY(
  SELECT [values]= STUFF(REPLACE(REPLACE(
  (
  SELECT value FROM tb N
  WHERE id = A.id
  FOR XML AUTO
  ), '<N value="', ','), '"/>', ''), 1, 1, '')
)N
drop table tb

/*
id values
----------- -----------
1 aa,bb
2 aaa,bbb,ccc

(2 行受影响)
*/

--SQL2005中的方法2
create table tb(id int, value varchar(10))
insert into tb values(1, 'aa')
insert into tb values(1, 'bb')
insert into tb values(2, 'aaa')
insert into tb values(2, 'bbb')
insert into tb values(2, 'ccc')
go

select id, [values]=stuff((select ','+[value] from tb t where id=tb.id for xml path('')), 1, 1, '')
from tb
group by id

/*
id values
----------- --------------------
1 aa,bb
2 aaa,bbb,ccc

(2 row(s) affected)

*/

drop table tb
按某一字段分组取最大(小)值所在行的数据 sql
--按某一字段分组取最大(小)值所在行的数据
--(爱新觉罗.毓华(十八年风雨,守得冰山雪莲花开) 2007-10-23于浙江杭州)
/*
数据如下:
name val memo
a    2   a2(a的第二个值)
a    1   a1--a的第一个值
a    3   a3:a的第三个值
b    1   b1--b的第一个值
b    3   b3:b的第三个值
b    2   b2b2b2b2
b    4   b4b4
b    5   b5b5b5b5b5
*/
--创建表并插入数据:
create table tb(name varchar(10),val int,memo varchar(20))
insert into tb values('a',    2,   'a2(a的第二个值)')
insert into tb values('a',    1,   'a1--a的第一个值')
insert into tb values('a',    3,   'a3:a的第三个值')
insert into tb values('b',    1,   'b1--b的第一个值')
insert into tb values('b',    3,   'b3:b的第三个值')
insert into tb values('b',    2,   'b2b2b2b2')
insert into tb values('b',    4,   'b4b4')
insert into tb values('b',    5,   'b5b5b5b5b5')
go

--一、按name分组取val最大的值所在行的数据。
--方法1:
select a.* from tb a where val = (select max(val) from tb where name = a.name) order by a.name
--方法2:
select a.* from tb a where not exists(select 1 from tb where name = a.name and val > a.val)
--方法3:
select a.* from tb a,(select name,max(val) val from tb group by name) b where a.name = b.name and a.val = b.val order by a.name
--方法4:
select a.* from tb a inner join (select name , max(val) val from tb group by name) b on a.name = b.name and a.val = b.val order by a.name
--方法5
select a.* from tb a where 1 > (select count(*) from tb where name = a.name and val > a.val ) order by a.name
/*
name       val         memo                 
---------- ----------- -------------------- 
a          3           a3:a的第三个值
b          5           b5b5b5b5b5
*/

--二、按name分组取val最小的值所在行的数据。
--方法1:
select a.* from tb a where val = (select min(val) from tb where name = a.name) order by a.name
--方法2:
select a.* from tb a where not exists(select 1 from tb where name = a.name and val < a.val)
--方法3:
select a.* from tb a,(select name,min(val) val from tb group by name) b where a.name = b.name and a.val = b.val order by a.name
--方法4:
select a.* from tb a inner join (select name , min(val) val from tb group by name) b on a.name = b.name and a.val = b.val order by a.name
--方法5
select a.* from tb a where 1 > (select count(*) from tb where name = a.name and val < a.val) order by a.name
/*
name       val         memo                 
---------- ----------- -------------------- 
a          1           a1--a的第一个值
b          1           b1--b的第一个值
*/

--三、按name分组取第一次出现的行所在的数据。
select a.* from tb a where val = (select top 1 val from tb where name = a.name) order by a.name
/*
name       val         memo                 
---------- ----------- -------------------- 
a          2           a2(a的第二个值)
b          1           b1--b的第一个值
*/

--四、按name分组随机取一条数据。
select a.* from tb a where val = (select top 1 val from tb where name = a.name order by newid()) order by a.name
/*
name       val         memo                 
---------- ----------- -------------------- 
a          1           a1--a的第一个值
b          5           b5b5b5b5b5
*/

--五、按name分组取最小的两个(N个)val
select a.* from tb a where 2 > (select count(*) from tb where name = a.name and val < a.val ) order by a.name,a.val
select a.* from tb a where val in (select top 2 val from tb where name=a.name order by val) order by a.name,a.val
select a.* from tb a where exists (select count(*) from tb where name = a.name and val < a.val having Count(*) < 2) order by a.name
/*
name       val         memo                 
---------- ----------- -------------------- 
a          1           a1--a的第一个值
a          2           a2(a的第二个值)
b          1           b1--b的第一个值
b          2           b2b2b2b2
*/

--六、按name分组取最大的两个(N个)val
select a.* from tb a where 2 > (select count(*) from tb where name = a.name and val > a.val ) order by a.name,a.val
select a.* from tb a where val in (select top 2 val from tb where name=a.name order by val desc) order by a.name,a.val
select a.* from tb a where exists (select count(*) from tb where name = a.name and val > a.val having Count(*) < 2) order by a.name
/*
name       val         memo                 
---------- ----------- -------------------- 
a          2           a2(a的第二个值)
a          3           a3:a的第三个值
b          4           b4b4
b          5           b5b5b5b5b5
*/
--七,如果整行数据有重复,所有的列都相同。
/*
数据如下:
name val memo
a    2   a2(a的第二个值)
a    1   a1--a的第一个值
a    1   a1--a的第一个值
a    3   a3:a的第三个值
a    3   a3:a的第三个值
b    1   b1--b的第一个值
b    3   b3:b的第三个值
b    2   b2b2b2b2
b    4   b4b4
b    5   b5b5b5b5b5
*/
--在sql server 2000中只能用一个临时表来解决,生成一个自增列,先对val取最大或最小,然后再通过自增列来取数据。
--创建表并插入数据:
create table tb(name varchar(10),val int,memo varchar(20))
insert into tb values('a',    2,   'a2(a的第二个值)')
insert into tb values('a',    1,   'a1--a的第一个值')
insert into tb values('a',    1,   'a1--a的第一个值')
insert into tb values('a',    3,   'a3:a的第三个值')
insert into tb values('a',    3,   'a3:a的第三个值')
insert into tb values('b',    1,   'b1--b的第一个值')
insert into tb values('b',    3,   'b3:b的第三个值')
insert into tb values('b',    2,   'b2b2b2b2')
insert into tb values('b',    4,   'b4b4')
insert into tb values('b',    5,   'b5b5b5b5b5')
go

select * , px = identity(int,1,1) into tmp from tb

select m.name,m.val,m.memo from
(
  select t.* from tmp t where val = (select min(val) from tmp where name = t.name)
) m where px = (select min(px) from
(
  select t.* from tmp t where val = (select min(val) from tmp where name = t.name)
) n where n.name = m.name)

drop table tb,tmp

/*
name       val         memo
---------- ----------- --------------------
a          1           a1--a的第一个值
b          1           b1--b的第一个值

(2 行受影响)
*/
--在sql server 2005中可以使用row_number函数,不需要使用临时表。
--创建表并插入数据:
create table tb(name varchar(10),val int,memo varchar(20))
insert into tb values('a',    2,   'a2(a的第二个值)')
insert into tb values('a',    1,   'a1--a的第一个值')
insert into tb values('a',    1,   'a1--a的第一个值')
insert into tb values('a',    3,   'a3:a的第三个值')
insert into tb values('a',    3,   'a3:a的第三个值')
insert into tb values('b',    1,   'b1--b的第一个值')
insert into tb values('b',    3,   'b3:b的第三个值')
insert into tb values('b',    2,   'b2b2b2b2')
insert into tb values('b',    4,   'b4b4')
insert into tb values('b',    5,   'b5b5b5b5b5')
go

select m.name,m.val,m.memo from
(
  select * , px = row_number() over(order by name , val) from tb
) m where px = (select min(px) from
(
  select * , px = row_number() over(order by name , val) from tb
) n where n.name = m.name)

drop table tb

/*
name       val         memo
---------- ----------- --------------------
a          1           a1--a的第一个值
b          1           b1--b的第一个值

(2 行受影响)
*/
普通行列转换(version 2.0) sql
/*
标题:普通行列转换(version 2.0)
作者:爱新觉罗.毓华(十八年风雨,守得冰山雪莲花开)
时间:2008-03-09
地点:广东深圳
说明:普通行列转换(version 1.0)仅针对sql server 2000提供静态和动态写法,version 2.0增加sql server 2005的有关写法。

问题:假设有张学生成绩表(tb)如下:
姓名 课程 分数
张三 语文 74
张三 数学 83
张三 物理 93
李四 语文 74
李四 数学 84
李四 物理 94
想变成(得到如下结果): 
姓名 语文 数学 物理 
---- ---- ---- ----
李四 74   84   94
张三 74   83   93
-------------------
*/

create table tb(姓名 varchar(10) , 课程 varchar(10) , 分数 int)
insert into tb values('张三' , '语文' , 74)
insert into tb values('张三' , '数学' , 83)
insert into tb values('张三' , '物理' , 93)
insert into tb values('李四' , '语文' , 74)
insert into tb values('李四' , '数学' , 84)
insert into tb values('李四' , '物理' , 94)
go

--SQL SERVER 2000 静态SQL,指课程只有语文、数学、物理这三门课程。(以下同)
select 姓名 as 姓名 ,
  max(case 课程 when '语文' then 分数 else 0 end) 语文,
  max(case 课程 when '数学' then 分数 else 0 end) 数学,
  max(case 课程 when '物理' then 分数 else 0 end) 物理
from tb
group by 姓名

--SQL SERVER 2000 动态SQL,指课程不止语文、数学、物理这三门课程。(以下同)
declare @sql varchar(8000)
set @sql = 'select 姓名 '
select @sql = @sql + ' , max(case 课程 when ''' + 课程 + ''' then 分数 else 0 end) [' + 课程 + ']'
from (select distinct 课程 from tb) as a
set @sql = @sql + ' from tb group by 姓名'
exec(@sql) 

--SQL SERVER 2005 静态SQL。
select * from (select * from tb) a pivot (max(分数) for 课程 in (语文,数学,物理)) b

--SQL SERVER 2005 动态SQL。
declare @sql varchar(8000)
select @sql = isnull(@sql + '],[' , '') + 课程 from tb group by 课程
set @sql = '[' + @sql + ']'
exec ('select * from (select * from tb) a pivot (max(分数) for 课程 in (' + @sql + ')) b')

---------------------------------

/*
问题:在上述结果的基础上加平均分,总分,得到如下结果:
姓名 语文 数学 物理 平均分 总分 
---- ---- ---- ---- ------ ----
李四 74   84   94   84.00  252
张三 74   83   93   83.33  250
*/

--SQL SERVER 2000 静态SQL。
select 姓名 姓名,
  max(case 课程 when '语文' then 分数 else 0 end) 语文,
  max(case 课程 when '数学' then 分数 else 0 end) 数学,
  max(case 课程 when '物理' then 分数 else 0 end) 物理,
  cast(avg(分数*1.0) as decimal(18,2)) 平均分,
  sum(分数) 总分
from tb
group by 姓名

--SQL SERVER 2000 动态SQL。
declare @sql varchar(8000)
set @sql = 'select 姓名 '
select @sql = @sql + ' , max(case 课程 when ''' + 课程 + ''' then 分数 else 0 end) [' + 课程 + ']'
from (select distinct 课程 from tb) as a
set @sql = @sql + ' , cast(avg(分数*1.0) as decimal(18,2)) 平均分 , sum(分数) 总分 from tb group by 姓名'
exec(@sql) 

--SQL SERVER 2005 静态SQL。
select m.* , n.平均分 , n.总分 from
(select * from (select * from tb) a pivot (max(分数) for 课程 in (语文,数学,物理)) b) m,
(select 姓名 , cast(avg(分数*1.0) as decimal(18,2)) 平均分 , sum(分数) 总分 from tb group by 姓名) n
where m.姓名 = n.姓名

--SQL SERVER 2005 动态SQL。
declare @sql varchar(8000)
select @sql = isnull(@sql + ',' , '') + 课程 from tb group by 课程
exec ('select m.* , n.平均分 , n.总分 from
(select * from (select * from tb) a pivot (max(分数) for 课程 in (' + @sql + ')) b) m , 
(select 姓名 , cast(avg(分数*1.0) as decimal(18,2)) 平均分 , sum(分数) 总分 from tb group by 姓名) n
where m.姓名 = n.姓名')

drop table tb    

------------------
------------------

/*
问题:如果上述两表互相换一下:即表结构和数据为:
姓名 语文 数学 物理
张三 74  83  93
李四 74  84  94
想变成(得到如下结果): 
姓名 课程 分数 
---- ---- ----
李四 语文 74
李四 数学 84
李四 物理 94
张三 语文 74
张三 数学 83
张三 物理 93
--------------
*/

create table tb(姓名 varchar(10) , 语文 int , 数学 int , 物理 int)
insert into tb values('张三',74,83,93)
insert into tb values('李四',74,84,94)
go

--SQL SERVER 2000 静态SQL。
select * from
(
 select 姓名 , 课程 = '语文' , 分数 = 语文 from tb 
 union all
 select 姓名 , 课程 = '数学' , 分数 = 数学 from tb
 union all
 select 姓名 , 课程 = '物理' , 分数 = 物理 from tb
) t
order by 姓名 , case 课程 when '语文' then 1 when '数学' then 2 when '物理' then 3 end

--SQL SERVER 2000 动态SQL。
--调用系统表动态生态。
declare @sql varchar(8000)
select @sql = isnull(@sql + ' union all ' , '' ) + ' select 姓名 , [课程] = ' + quotename(Name , '''') + ' , [分数] = ' + quotename(Name) + ' from tb'
from syscolumns 
where name! = N'姓名' and ID = object_id('tb') --表名tb,不包含列名为姓名的其它列
order by colid asc
exec(@sql + ' order by 姓名 ')

--SQL SERVER 2005 动态SQL。
select 姓名 , 课程 , 分数 from tb unpivot (分数 for 课程 in([语文] , [数学] , [物理])) t

--SQL SERVER 2005 动态SQL,同SQL SERVER 2000 动态SQL。

--------------------
/*
问题:在上述的结果上加个平均分,总分,得到如下结果:
姓名 课程   分数
---- ------ ------
李四 语文   74.00
李四 数学   84.00
李四 物理   94.00
李四 平均分 84.00
李四 总分   252.00
张三 语文   74.00
张三 数学   83.00
张三 物理   93.00
张三 平均分 83.33
张三 总分   250.00
------------------
*/

select * from
(
 select 姓名 as 姓名 , 课程 = '语文' , 分数 = 语文 from tb 
 union all
 select 姓名 as 姓名 , 课程 = '数学' , 分数 = 数学 from tb
 union all
 select 姓名 as 姓名 , 课程 = '物理' , 分数 = 物理 from tb
 union all
 select 姓名 as 姓名 , 课程 = '平均分' , 分数 = cast((语文 + 数学 + 物理)*1.0/3 as decimal(18,2)) from tb
 union all
 select 姓名 as 姓名 , 课程 = '总分' , 分数 = 语文 + 数学 + 物理 from tb
) t
order by 姓名 , case 课程 when '语文' then 1 when '数学' then 2 when '物理' then 3 when '平均分' then 4 when '总分' then 5 end

drop table tb
查询表的默认值 sql
--查询表的默认值
if object_id('tb') is not null
drop table tb
go
create table tb(id int,name varchar(50) default 'abc',num int default 5)
insert into tb(id) select 1
insert into tb select 1,'oo',100
insert into tb(id,name) select 1,'oo'
go
declare @tbname varchar(50)
set @tbname='tb'--表名
select @tbname as tbname,c.name as colname,replace(replace(replace(replace(b.[text],'(''',''),''')',''),'((',''),'))','') as defaultvalue
from sysconstraints a join syscomments b on a.constid=b.id  
join syscolumns c on a.id=c.id and a.colid=c.colid
where a.id=object_id(@tbname) and object_name(a.constid) like '%df%'
模糊表名的联合查询 sql
create table tz2008_1_1(id int,name varchar(50))
insert into tz2008_1_1 select 1,'a'
create table tz2008_1_2(id int,name varchar(50))
insert into tz2008_1_2 select 2,'b'
create table tz2008_1_3(id int,name varchar(50))
insert into tz2008_1_3 select 3,'c'


declare @sql varchar(8000)
select @sql=isnull(@sql+' union all ','')+' select * from ['+name+']'
from sysobjects where xtype='u' and name like 'tz2008%'
exec(@sql)
求N的N次方最后一位是什么 c/c++ 开源中国社区
//求N的N次方最后一位为、是什么
//思路只需要求个位数的乘积即可
//而通过我们的推导当个位数为i(i>=0&&i<=9)的时候
//存在如下关系
#include<stdio.h>
int a[10][4]={{0},{1},{6,2,4,8},{1,3,9,7},{6,4},{5},{6},
              {1,7,9,3},{6,8,4,2},{1,9}};
int main()
{   
	int n,number;
	scanf("%d",&n);
	while(scanf("%d",&number))
	{
		switch(number%10)
		{
			case 0:
			case 1:
			case 5:
			case 6:
			    printf("%d\n",a[number%10][0]);
			    break;
			case 2:
			case 3:
			case 7:
			case 8:
			    printf("%d\n",a[number%10][number%4]);
			    break;
			case 4:
			case 9:
			    printf("%d\n",a[number%10][number%2]);
			    break;
		}
	}
	return 0;
}
JS总结 js 开源中国社区
1.document.write(""); 输出语句
2.JS中的注释为//
3.传统的HTML文档顺序是:document->html->(head,body)
4.一个浏览器窗口中的DOM顺序是:window->(navigator,screen,history,location,document)
5.得到表单中元素的名称和值:document.getElementById("表单中元素的ID号").name(或value)
6.一个小写转大写的JS: document.getElementById("output").value =
document.getElementById("input").value.toUpperCase();
7.JS中的值类型:String,Number,Boolean,Null,Object,Function
8.JS中的字符型转换成数值型:parseInt(),parseFloat()
9.JS中的数字转换成字符型:(""+变量)
10.JS中的取字符串长度是:(length)
11.JS中的字符与字符相连接使用+号.
12.JS中的比较操作符有:==等于,!=不等于,>,>=,<.<=
13.JS中声明变量使用:var来进行声明
14.JS中的判断语句结构:if(condition){}else{}
15.JS中的循环结构:for([initial expression];[condition];[upadte expression]) {inside loop}
16.循环中止的命令是:break
17.JS中的函数定义:function functionName([parameter],...){statement[s]}
18.当文件中出现多个form表单时.可以用document.forms[0],document.forms[1]来代替.
19.窗口:打开窗口window.open(), 关闭一个窗口:window.close(), 窗口本身:self
20.状态栏的设置:window.status="字符";
21.弹出提示信息:window.alert("字符");
22.弹出确认框:window.confirm();
23.弹出输入提示框:window.prompt();
24.指定当前显示链接的位置:window.location.href="URL"
25.取出窗体中的所有表单的数量:document.forms.length
26.关闭文档的输出流:document.close();
27.字符串追加连接符:+=
28.创建一个文档元素:document.createElement(),document.createTextNode()
29.得到元素的方法:document.getElementById()
30.设置表单中所有文本型的成员的值为空:
var form = window.document.forms[0]
for (var i = 0; i<form.elements.length;i++){
    if (form.elements.type == "text"){
        form.elements.value = "";
    }
}
31.复选按钮在JS中判断是否选中:document.forms[0].checkThis.checked (checked属性代表为是否选中返回TRUE或FALSE)
32.单选按钮组(单选按钮的名称必须相同):取单选按钮组的长度document.forms[0].groupName.length
33.单选按钮组判断是否被选中也是用checked.
34.下拉列表框的值:document.forms[0].selectName.options[n].value (n有时用下拉列表框名称加上.selectedIndex来确定被选中的值)
35.字符串的定义:var myString = new String("This is lightsword");
36.字符串转成大写:string.toUpperCase(); 字符串转成小写:string.toLowerCase();
37.返回字符串2在字符串1中出现的位置:String1.indexOf("String2")!=-1则说明没找到.
38.取字符串中指定位置的一个字符:StringA.charAt(9);
39.取出字符串中指定起点和终点的子字符串:stringA.substring(2,6);
40.数学函数:Math.PI(返回圆周率),Math.SQRT2(返回开方),Math.max(value1,value2)返回两个数中的最在值,Math.pow(value1,10)返回value1的十次方,Math.round(value1)四舍五入函数,Math.floor(Math.random()*(n+1))返回随机数
41.定义日期型变量:var today = new Date();
42.日期函数列表:dateObj.getTime()得到时间,dateObj.getYear()得到年份,dateObj.getFullYear()得到四位的年份,dateObj.getMonth()得到月份,dateObj.getDate()得到日,dateObj.getDay()得到日期几,dateObj.getHours()得到小时,dateObj.getMinutes()得到分,dateObj.getSeconds()得到秒,dateObj.setTime(value)设置时间,dateObj.setYear(val)设置年,dateObj.setMonth(val)设置月,dateObj.setDate(val)设置日,dateObj.setDay(val)设置星期几,dateObj.setHours设置小时,dateObj.setMinutes(val)设置分,dateObj.setSeconds(val)设置秒  [注意:此日期时间从0开始计]
43.FRAME的表示方式: [window.]frames[n].ObjFuncVarName,frames["frameName"].ObjFuncVarName,frameName.ObjFuncVarName
44.parent代表父亲对象,top代表最顶端对象
45.打开子窗口的父窗口为:opener
46.表示当前所属的位置:this
47.当在超链接中调用JS函数时用:(javascript :)来开头后面加函数名
48.在老的浏览器中不执行此JS:<!--      //-->
49.引用一个文件式的JS:<script type="text/javascript" src="aaa.js"></script>
50.指定在不支持脚本的浏览器显示的HTML:<noscript></noscript>
51.当超链和onCLICK事件都有时,则老版本的浏览器转向a.html,否则转向b.html.例:<a href="a.html" onclick="location.href='b.html';return false">dfsadf</a>
52.JS的内建对象有:Array,Boolean,Date,Error,EvalError,Function,Math,Number,Object,RangeError,
ReferenceError,RegExp,String,SyntaxError,TypeError,URIError
53.JS中的换行:\n
54.窗口全屏大小:<script>function fullScreen(){ this.moveTo(0,0);this.outerWidth=screen.availWidth;this.outerHeight=screen.availHeight;}
window.maximize=fullScreen;</script>
55.JS中的all代表其下层的全部元素
56.JS中的焦点顺序:document.getElementByid("表单元素").tabIndex = 1
57.innerHTML的值是表单元素的值:如<p id="para">"how are <em>you</em>"</p>,则innerHTML的值就是:how are <em>you</em>
58.innerTEXT的值和上面的一样,只不过不会把<em>这种标记显示出来.
59.contentEditable可设置元素是否可被修改,isContentEditable返回是否可修改的状态.
60.isDisabled判断是否为禁止状态.disabled设置禁止状态
61.length取得长度,返回整型数值
62.addBehavior()是一种JS调用的外部函数文件其扩展名为.htc
63.window.focus()使当前的窗口在所有窗口之前.
64.blur()指失去焦点.与FOCUS()相反.
65.select()指元素为选中状态.
66.防止用户对文本框中输入文本:onfocus="this.blur()"
67.取出该元素在页面中出现的数量:document.all.tags("div(或其它HTML标记符)").length
68.JS中分为两种窗体输出:模态和非模态.window.showModaldialog(),window.showModeless()
69.状态栏文字的设置:window.status='文字',默认的状态栏文字设置:window.defaultStatus = '文字.';
70.添加到收藏夹:external.AddFavorite("http://www.dannyg.com";,"jaskdlf");
71.JS中遇到脚本错误时不做任何操作:window.onerror = doNothing; 指定错误句柄的语法为:window.onerror = handleError;
72.JS中指定当前打开窗口的父窗口:window.opener,支持opener.opener...的多重继续.
73.JS中的self指的是当前的窗口
74.JS中状态栏显示内容:window.status="内容"
75.JS中的top指的是框架集中最顶层的框架
76.JS中关闭当前的窗口:window.close();
77.JS中提出是否确认的框:if(confirm("Are you sure?")){alert("ok");}else{alert("Not Ok");}
78.JS中的窗口重定向:window.navigate("http://www.sina.com.cn";);
79.JS中的打印:window.print()
80.JS中的提示输入框:window.prompt("message","defaultReply");
81.JS中的窗口滚动条:window.scroll(x,y)
82.JS中的窗口滚动到位置:window.scrollby
83.JS中设置时间间隔:setInterval("expr",msecDelay)或setInterval(funcRef,msecDelay)或setTimeout
84.JS中的模态显示在IE4+行,在NN中不行:showModalDialog("URL"[,arguments][,features]);
85.JS中的退出之前使用的句柄:function verifyClose()
{event.returnValue="we really like you and hope you will stay longer.";}}
 window.onbeforeunload=verifyClose;
86.当窗体第一次调用时使用的文件句柄:onload()
87.当窗体关闭时调用的文件句柄:onunload()
88.window.location的属性: protocol(http:),hostname(www.example.com),port(80),host(www.example.com:80),pathname("/a/a.html"),hash("#giantGizmo",指跳转到相应的锚记),href(全部的信息)
89.window.location.reload()刷新当前页面.
90.window.history.back()返回上一页,window.history.forward()返回下一页,window.history.go(返回第几页,也可以使用访问过的URL)
91.document.write()不换行的输出,document.writeln()换行输出
92.document.body.noWrap=true;防止链接文字折行.
93.变量名.charAt(第几位),取该变量的第几位的字符.
94."abc".charCodeAt(第几个),返回第几个字符的ASCii码值.
95.字符串连接:string.concat(string2),或用+=进行连接
96.变量.indexOf("字符",起始位置),返回第一个出现的位置(从0开始计算)
97.string.lastIndexOf(searchString[,startIndex])最后一次出现的位置.
98.string.match(regExpression),判断字符是否匹配.
99.string.replace(regExpression,replaceString)替换现有字符串.
100.string.split(分隔符)返回一个数组存储值.
101.string.substr(start[,length])取从第几位到指定长度的字符串.
102.string.toLowerCase()使字符串全部变为小写.
103.string.toUpperCase()使全部字符变为大写.
104.parseInt(string[,radix(代表进制)])强制转换成整型.
105.parseFloat(string[,radix])强制转换成浮点型.
106.isNaN(变量):测试是否为数值型.
107.定义常量的关键字:const,定义变量的关键字:var
格式化XML js
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">

<html>
<head>
        <title>Xml格式化工具</title>
<script type="text/javascript">
    
document.onreadystatechange = subSomething;
function subSomething() { 
	if(document.readyState == "complete") {
		formatXml();
	}
} 

function formatXml(){ 
 	var $ = document.getElementById;
	var str = $('xml').value; 
	if(str.length==0)
	{
		return ;
	}
	strstr = str.replace(/^\s+|\s+$/g,"");  
	var source = new ActiveXObject("Msxml2.DOMDocument.6.0");  
	source.async = false;  
	source.loadXML(str);     
	var stylesheet = new ActiveXObject("Msxml2.DOMDocument.6.0");  
	stylesheet.async = false;  
	//stylesheet.resolveExternals = false;  
	stylesheet.load("dd.xsl");  
	var result = new ActiveXObject("Msxml2.DOMDocument.6.0");  
	result.async = false;  

	source.transformNodeToObject(stylesheet, result);  
	//alert(result.xml); 
	if(result.xml==''||result.xml==null){ 
		alert('xml报文格式错误,请检查'); 
		return false; 
	} 
	var finalStr = "<?xml version=\"1.0\" encoding=\"GBK\"?> \n" +result.xml; 

	$('xml').value =finalStr; 
} 
</script> 

</head> 
<body> 
    <textarea id="xml" style="width:100%;height:90%;"></textarea> 
    <div style="margin:0px auto;"><input type="button" id="btnFormat" onclick="formatXml()" value="格式化"/></div>  
</body> 
</html>
 
 使用:

<?xml version="1.0"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method = "xml"  omit-xml-declaration = "yes" indent="yes"/>
 <xsl:template match="/ | @* | node()">
    <xsl:copy>
      <xsl:apply-templates select="@* | node()"/>
    </xsl:copy>
  </xsl:template>
  
</xsl:stylesheet>
javascript 空值判断 js 开源中国社区
function check(form){
    var obj=form.elements||form;
    for (var i=0;i < obj.length;i++){
        if (obj[i].getAttribute("msg")!=""){
            if (obj[i].value.replace(/(^s*)|(s*$)/g,"")==""){
                alert(obj[i].getAttribute("msg")+"不能为空!");
                obj[i].focus();
                return false;
                
                }
            }
        }
            if (form.Pwd.value!=form.Pwd1.value){
            alert("两次输入的密码不一致,请重新输入!");
            form.Pwd.focus();
            return false;
            }
        
    return true;    
    }  
javascript正则表达式的使用 js 开源中国社区
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>无标题文档</title>
<script type="text/javascript" language="javascript">
function onQuermm(){
var xinmm=document.getElementById("xinmm").value;
var aa=new RegExp("(?![a-z]+$|[0-9]+$)^[a-zA-Z0-9]{7,}$");
if (aa.test(xinmm))
{

}
else
{
alert("密码必须大于6位有字母和数字组成!");
}

}


</script>
</head>


<body>
<form action="" method="post" onsubmit="onQuermm()">
<table border="1" cellpadding="1" cellspacing="1" width="300" height="310">
<tr>
	<td>原始密码:</td><td><input id="yuansmm" name="yuansmm" value="" /></td>
</tr>
<tr>
	<td>新密码:</td><td><input id="xinmm" name="xinmm" value="" /></td>
</tr>
<tr>
	<td>确认密码:</td><td><input id="quermm" name="quermm" value="" /></td>
</tr>
<tr>
<td height="120" colspan="2">
    <input type="submit" name="Submit" value="提交"  />
</td>
</tr>
</table>
</form>
</body>
</html>
JS操作Cookie常用方法 js 开源中国社区
/*
*设置与获取Cookie
*/
var Cookie = {}
//写入Cookie,key为键,value是值
//duration过期时间(天为单位,默认1天)
Cookie.write = function (key, value, duration)
{
    Cookie.remove(key);
    var d = new Date();
    if (duration <= 0)
        duration = 1;
    d.setTime(d.getTime() + 1000 * 60 * 60 * 24 * duration);
    document.cookie = key + "=" + encodeURI(value) + "; expires=" + d.toGMTString() + ";path=/";
};
//移除Cookie,key为键
Cookie.remove = function (key)
{
    var d = new Date();
    if (Cookie.read(key) != "")
    {
        d.setTime(d.getTime() - (86400 * 1000 * 1));
        document.cookie = key + "=;expires=" + d.toGMTString();
    }
};
//读取Cookie,key是键
//不存在返回空字符串""
Cookie.read = function (key)
{
    var arr = document.cookie.match(new RegExp("(^| )" + key + "=([^;]*)(;|$)"));
    if (arr != null)
        return decodeURIComponent(arr[2]);
    return "";
};
python多进程分块读取文件 python 开源中国社区
# -*- coding: GBK -*-

import urlparse
import datetime
import os
from multiprocessing import Process,Queue,Array,RLock

"""
多进程分块读取文件
"""

WORKERS = 4
BLOCKSIZE = 100000000
FILE_SIZE = 0

def getFilesize(file):
    """
        获取要读取文件的大小
    """
    global FILE_SIZE
    fstream = open(file,'r')
    fstream.seek(0,os.SEEK_END)
    FILE_SIZE = fstream.tell()
    fstream.close()

def process_found(pid,array,file,rlock):
    global FILE_SIZE
    global JOB
    global PREFIX
    """
        进程处理
        Args:
            pid:进程编号
            array:进程间共享队列,用于标记各进程所读的文件块结束位置
            file:所读文件名称
        各个进程先从array中获取当前最大的值为起始位置startpossition
        结束的位置endpossition (startpossition+BLOCKSIZE) if (startpossition+BLOCKSIZE)<FILE_SIZE else FILE_SIZE
        if startpossition==FILE_SIZE则进程结束
        if startpossition==0则从0开始读取
        if startpossition!=0为防止行被block截断的情况,先读一行不处理,从下一行开始正式处理
        if 当前位置 <=endpossition 就readline
        否则越过边界,就从新查找array中的最大值
    """
    fstream = open(file,'r')
    
    while True:
        rlock.acquire()
        print 'pid%s'%pid,','.join([str(v) for v in array])
        startpossition = max(array)            
        endpossition = array[pid] = (startpossition+BLOCKSIZE) if (startpossition+BLOCKSIZE)<FILE_SIZE else FILE_SIZE
        rlock.release()
        
        if startpossition == FILE_SIZE:#end of the file
            print 'pid%s end'%(pid)
            break
        elif startpossition !=0:
            fstream.seek(startpossition)
            fstream.readline()
        pos = ss = fstream.tell()
        ostream = open('/data/download/tmp_pid'+str(pid)+'_jobs'+str(endpossition),'w')
        while pos<endpossition:
            #处理line
            line = fstream.readline()                        
            ostream.write(line)
            pos = fstream.tell()

        print 'pid:%s,startposition:%s,endposition:%s,pos:%s'%(pid,ss,pos,pos)
        ostream.flush()
        ostream.close()
        ee = fstream.tell()        

    fstream.close()

def main():
    global FILE_SIZE
    print datetime.datetime.now().strftime("%Y/%d/%m %H:%M:%S") 
    
    file = "/data/pds/download/scmcc_log/tmp_format_2011004.log"
    getFilesize(file)
    print FILE_SIZE
    
    rlock = RLock()
    array = Array('l',WORKERS,lock=rlock)
    threads=[]
    for i in range(WORKERS):
        p=Process(target=process_found, args=[i,array,file,rlock])
        threads.append(p)

    for i in range(WORKERS):
        threads[i].start()
    
    for i in range(WORKERS):
        threads[i].join()

    print datetime.datetime.now().strftime("%Y/%d/%m %H:%M:%S") 

if __name__ == '__main__':
    main()
C#进行INI文件的读写操作 c# 开源中国社区
using System;
using System.IO;
using System.Runtime.InteropServices;
using System.Text;
using System.Collections;
using System.Collections.Specialized;
//VC中提供了API函数进行INI文件的读写操作,但是微软推出的C#编程语言中却没有相应的方法,下面是一个C# ini文件读写类,从网上收集的,很全,就是没有对section的改名功能,高手可以增加一个
namespace wuyisky{
  /**//**/
  /**//// <summary>
  /// IniFiles的类
  /// </summary>
  public class IniFiles
  {
    public string FileName; //INI文件名
    //声明读写INI文件的API函数
    [DllImport("kernel32")]
    private static extern bool WritePrivateProfileString(string section, string key, string val, string filePath);
    [DllImport("kernel32")]
    private static extern int GetPrivateProfileString(string section, string key, string def, byte[] retVal, int size, string filePath);
    //类的构造函数,传递INI文件名
    public IniFiles(string AFileName)
    {
      // 判断文件是否存在
      FileInfo fileInfo = new FileInfo(AFileName);
      //Todo:搞清枚举的用法
      if ((!fileInfo.Exists))
      { //|| (FileAttributes.Directory in fileInfo.Attributes))
        //文件不存在,建立文件
        System.IO.StreamWriter sw = new System.IO.StreamWriter(AFileName, false, System.Text.Encoding.Default);
        try
        {
          sw.Write("#表格配置档案");
          sw.Close();
        }

        catch
        {
          throw (new ApplicationException("Ini文件不存在"));
        }
      }
      //必须是完全路径,不能是相对路径
      FileName = fileInfo.FullName;
    }
    //写INI文件
    public void WriteString(string Section, string Ident, string Value)
    {
      if (!WritePrivateProfileString(Section, Ident, Value, FileName))
      {
 
        throw (new ApplicationException("写Ini文件出错"));
      }
    }
    //读取INI文件指定
    public string ReadString(string Section, string Ident, string Default)
    {
      Byte[] Buffer = new Byte[65535];
      int bufLen = GetPrivateProfileString(Section, Ident, Default, Buffer, Buffer.GetUpperBound(0), FileName);
      //必须设定0(系统默认的代码页)的编码方式,否则无法支持中文
      string s = Encoding.GetEncoding(0).GetString(Buffer);
      s = s.Substring(0, bufLen);
      return s.Trim();
    }

    //读整数
    public int ReadInteger(string Section, string Ident, int Default)
    {
      string intStr = ReadString(Section, Ident, Convert.ToString(Default));
      try
      {
        return Convert.ToInt32(intStr);

      }
      catch (Exception ex)
      {
        Console.WriteLine(ex.Message);
        return Default;
      }
    }

    //写整数
    public void WriteInteger(string Section, string Ident, int Value)
    {
      WriteString(Section, Ident, Value.ToString());
    }

    //读布尔
    public bool ReadBool(string Section, string Ident, bool Default)
    {
      try
      {
        return Convert.ToBoolean(ReadString(Section, Ident, Convert.ToString(Default)));
      }
      catch (Exception ex)
      {
        Console.WriteLine(ex.Message);
        return Default;
      }
    }

    //写Bool
    public void WriteBool(string Section, string Ident, bool Value)
    {
      WriteString(Section, Ident, Convert.ToString(Value));
    }

    //从Ini文件中,将指定的Section名称中的所有Ident添加到列表中
    public void ReadSection(string Section, StringCollection Idents)
    {
      Byte[] Buffer = new Byte[16384];
      //Idents.Clear();

      int bufLen = GetPrivateProfileString(Section, null, null, Buffer, Buffer.GetUpperBound(0),
       FileName);
      //对Section进行解析
      GetStringsFromBuffer(Buffer, bufLen, Idents);
    }

    private void GetStringsFromBuffer(Byte[] Buffer, int bufLen, StringCollection Strings)
    {
      Strings.Clear();
      if (bufLen != 0)
      {
        int start = 0;
        for (int i = 0; i < bufLen; i++)
        {
          if ((Buffer[i] == 0) && ((i - start) > 0))
          {
            String s = Encoding.GetEncoding(0).GetString(Buffer, start, i - start);
            Strings.Add(s);
            start = i + 1;
          }
        }
      }
    }
    //从Ini文件中,读取所有的Sections的名称
    public void ReadSections(StringCollection SectionList)
    {
      //Note:必须得用Bytes来实现,StringBuilder只能取到第一个Section
      byte[] Buffer = new byte[65535];
      int bufLen = 0;
      bufLen = GetPrivateProfileString(null, null, null, Buffer,
       Buffer.GetUpperBound(0), FileName);
      GetStringsFromBuffer(Buffer, bufLen, SectionList);
    }
    //读取指定的Section的所有Value到列表中
    public void ReadSectionValues(string Section, NameValueCollection Values)
    {
      StringCollection KeyList = new StringCollection();
      ReadSection(Section, KeyList);
      Values.Clear();
      foreach (string key in KeyList)
      {
        Values.Add(key, ReadString(Section, key, ""));
  
      }
    }
    /**/////读取指定的Section的所有Value到列表中,
    //public void ReadSectionValues(string Section, NameValueCollection Values,char splitString)
    //{  string sectionValue;
    //  string[] sectionValueSplit;
    //  StringCollection KeyList = new StringCollection();
    //  ReadSection(Section, KeyList);
    //  Values.Clear();
    //  foreach (string key in KeyList)
    //  {
    //    sectionValue=ReadString(Section, key, "");
    //    sectionValueSplit=sectionValue.Split(splitString);
    //    Values.Add(key, sectionValueSplit[0].ToString(),sectionValueSplit[1].ToString());
 
    //  }
    //}
    //清除某个Section
    public void EraseSection(string Section)
    {
      //
      if (!WritePrivateProfileString(Section, null, null, FileName))
      {

        throw (new ApplicationException("无法清除Ini文件中的Section"));
      }
    }
    //删除某个Section下的键
    public void DeleteKey(string Section, string Ident)
    {
      WritePrivateProfileString(Section, Ident, null, FileName);
    }
    //Note:对于Win9X,来说需要实现UpdateFile方法将缓冲中的数据写入文件
    //在Win NT, 2000和XP上,都是直接写文件,没有缓冲,所以,无须实现UpdateFile
    //执行完对Ini文件的修改之后,应该调用本方法更新缓冲区。
    public void UpdateFile()
    {
      WritePrivateProfileString(null, null, null, FileName);
    }

    //检查某个Section下的某个键值是否存在
    public bool ValueExists(string Section, string Ident)
    {
      //
      StringCollection Idents = new StringCollection();
      ReadSection(Section, Idents);
      return Idents.IndexOf(Ident) > -1;
    }

    //确保资源的释放
    ~IniFiles()
    {
      UpdateFile();
    }
  }
}
C#公历转农历算法 c# 开源中国社区
/// <summary>
    /// LunDay 的摘要说明。
    /// 用法说明
    /// 直接调用即可,比较简单
    /// </summary>
    public class LunDay
    {
        public LunDay()
        {
            //
            // TODO: 在此处添加构造函数逻辑
            //
        }
        //天干
        private static string[] TianGan = { "甲", "乙", "丙", "丁", "戊", "己", "庚", "辛", "壬", "癸" };

        //地支
        private static string[] DiZhi = { "子", "丑", "寅", "卯", "辰", "巳", "午", "未", "申", "酉", "戌", "亥" };

        //十二生肖
        private static string[] ShengXiao = { "鼠", "牛", "虎", "兔", "龙", "蛇", "马", "羊", "猴", "鸡", "狗", "猪" };

        //农历日期
        private static string[] DayName =   {"*","初一","初二","初三","初四","初五",
             "初六","初七","初八","初九","初十",
             "十一","十二","十三","十四","十五",
             "十六","十七","十八","十九","二十",
             "廿一","廿二","廿三","廿四","廿五",      
             "廿六","廿七","廿八","廿九","三十"};

        //农历月份
        private static string[] MonthName = { "*", "正", "二", "三", "四", "五", "六", "七", "八", "九", "十", "十一", "腊" };

        //公历月计数天
        private static int[] MonthAdd = { 0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334 };
        //农历数据
        private static int[] LunarData = {2635,333387,1701,1748,267701,694,2391,133423,1175,396438
            ,3402,3749,331177,1453,694,201326,2350,465197,3221,3402
            ,400202,2901,1386,267611,605,2349,137515,2709,464533,1738
            ,2901,330421,1242,2651,199255,1323,529706,3733,1706,398762
            ,2741,1206,267438,2647,1318,204070,3477,461653,1386,2413
            ,330077,1197,2637,268877,3365,531109,2900,2922,398042,2395
            ,1179,267415,2635,661067,1701,1748,398772,2742,2391,330031
            ,1175,1611,200010,3749,527717,1452,2742,332397,2350,3222
            ,268949,3402,3493,133973,1386,464219,605,2349,334123,2709
            ,2890,267946,2773,592565,1210,2651,395863,1323,2707,265877};
        /// <summary>
        /// 获取对应日期的农历
        /// </summary>
        /// <param name="dtDay">公历日期</param>
        /// <returns></returns>
        public string GetLunarCalendar(DateTime dtDay)
        {
            string sYear = dtDay.Year.ToString();
            string sMonth = dtDay.Month.ToString();
            string sDay = dtDay.Day.ToString();
            int year;
            int month;
            int day;
            try
            {
                year = int.Parse(sYear);
                month = int.Parse(sMonth);
                day = int.Parse(sDay);
            }
            catch
            {
                year = DateTime.Now.Year;
                month = DateTime.Now.Month;
                day = DateTime.Now.Day;
            }

            int nTheDate;
            int nIsEnd;
            int k, m, n, nBit, i;
            string calendar = string.Empty;
            //计算到初始时间1921年2月8日的天数:1921-2-8(正月初一)
            nTheDate = (year - 1921) * 365 + (year - 1921) / 4 + day + MonthAdd[month - 1] - 38;
            if ((year % 4 == 0) && (month > 2))
                nTheDate += 1;
            //计算天干,地支,月,日
            nIsEnd = 0;
            m = 0;
            k = 0;
            n = 0;
            while (nIsEnd != 1)
            {
                if (LunarData[m] < 4095)
                    k = 11;
                else
                    k = 12;
                n = k;
                while (n >= 0)
                {
                    //获取LunarData[m]的第n个二进制位的值
                    nBit = LunarData[m];
                    for (i = 1; i < n + 1; i++)
                        nBit = nBit / 2;
                    nBit = nBit % 2;
                    if (nTheDate <= (29 + nBit))
                    {
                        nIsEnd = 1;
                        break;
                    }
                    nTheDate = nTheDate - 29 - nBit;
                    n = n - 1;
                }
                if (nIsEnd == 1)
                    break;
                m = m + 1;
            }
            year = 1921 + m;
            month = k - n + 1;
            day = nTheDate;
            //return year+"-"+month+"-"+day;

            #region 格式化日期显示为三月廿四
            if (k == 12)
            {
                if (month == LunarData[m] / 65536 + 1)
                    month = 1 - month;
                else if (month > LunarData[m] / 65536 + 1)
                    month = month - 1;
            }

            //生肖
            calendar = ShengXiao[(year - 4) % 60 % 12].ToString() + "年 ";
            //天干
            calendar += TianGan[(year - 4) % 60 % 10].ToString();
            //地支
            calendar += DiZhi[(year - 4) % 60 % 12].ToString() + " ";

            //农历月
            if (month < 1)
                calendar += "闰" + MonthName[-1 * month].ToString() + "月";
            else
                calendar += MonthName[month].ToString() + "月";

            //农历日
            calendar += DayName[day].ToString() + "日";

            return calendar;

            #endregion
        }
    }
js自动刷新代码 js
<script language="JavaScript">
function myrefresh(){
window.location.reload();
}
setTimeout('myrefresh()',1000); //指定1秒刷新一次
</script>
js定时调用函数 js
<script>
function foo(){
        alert(new Date());
setTimeout("foo()",5000);
}
foo();
</script>
Global site tag (gtag.js) - Google Analytics