mysql: 两个字段合并,字符时间转时间戳,别名字段作为where条件查询

有字段,a,b:

a存的是:2016-10-10

b存的是:10:15:30

mysql将字段合并:

concat(a, ‘ - ‘, b)  或者 concat(a, ‘ ‘, b)

字符时间转时间戳

unix_timestamp( concat(a, ‘ ‘, b) )

别名字段作为where条件:

在MySQL中有个特殊的规定,即不允许使用列别名作为查询条件。比如有下面一个表:

select 
    ID, 
    title, 
    concept, 
    conceptLength, 
    addUserId, 
    modifyTime
from collections_wisdom

将SQL修改如下:

select 
    ID+1 as newID
    title, 
    concept, 
    conceptLength, 
    addUserId, 
    modifyTime
from collections_wisdom
where newID>2

那么,执行起来就会出现异常:StatementCallback; bad SQL grammar

实在要执行,只好把新字段的组成在条件里再实现一遍,如下:

select 
    ID+1 as newID, 
    title, 
    concept, 
    conceptLength, 
    addUserId, 
    modifyTime
from collections_wisdom
where (ID+1)>2

之所以MySQL中不允许使用列别名作为查询条件,据说是因为MySql中列的别名本来是返回结果的时候才显示的,不在SQL解析时候使用。在没有更令人信服的解释出现前,权且当做这样吧。

或者可以这样,将合并的字符直接放在where里面

unix_timestamp(concat(a,‘ ‘, b)) BETWEEN :startTime: AND :endTime:
时间: 2025-01-01 15:57:55

mysql: 两个字段合并,字符时间转时间戳,别名字段作为where条件查询的相关文章

mysql 两个表合并查询 字段交换

项目七: 各部门工资最高的员工(难度:中等) 创建 Employee 表,包含所有员工信息,每个员工有其对应的 Id, salary 和 department Id. create table Employee( Id int auto_increment primary key, Name varchar not null, Salary int not null, DepartmentId int not null ); insert into Emploee (Name,Salary,De

Oralce给字段追加字符,以及oracle 给字段替换字符

追加字符 update table_name  t set t.DIST_NAME = t.DIST_NAME || '市' where PROD_NAME='爱立信' table_name  :表名   DIST_NAME:要追加字符的字段      '市': 追加字符的内容  where 后面为条件 (可不写) 替换字符 update table set 字段 =replace(字段,'hello','你好') where 条件 table 为表名    hello 为原来的字符  你好为

根据某个字段的长度,且不包含”,“,作为条件查询

select * from [TCInterVacationResource].dbo.IVRLineHotelRule(nolock) rul WHERE len(rul.IVRHRDiamond) >6 and CHARINDEX (',', rul.IVRHRDiamond)=0 查询IVRHRDiamond 不包含”,“,且长度大于6的结果

SQL_wm_concat函数实验:实现字段合并

原创作品,出自 "深蓝的blog" 博客,欢迎转载,转载时请务必注明以下出处,否则追究版权法律责任. 深蓝的blog:http://blog.csdn.net/huangyanlong/article/details/41347109 wm_concat函数:字段合并函数 目标:根据某字段相同值,实现其它某字段合并 [实验] 使用实验scott用户下的emp表 SQL> select * from emp; --先来查看一下emp表的全部内容 EMPNO JOB        

两张表A和B,各有一个字段,更新时间A.MODIFIED_TM和B.MODIFIED_TM,A表为主表,更新时间不为空,但是B表更新时间可能为空,现在要取A、B两表时间最新的那个,B.MODIFIED

问题描述: 两张表A和B,各有一个字段,更新时间A.MODIFIED_TM和B.MODIFIED_TM,A表为主表,更新时间不为空,但是B表更新时间可能为空,现在要取A.B两表时间最新的那个,B.MODIFIED_TM若为空就取A.MODIFIED_TM,例如: 表A ID    MODIFIED_TM 1     2013/3/10 18:07:12 2     2013/4/10 18:07:12 3     2013/5/10 18:07:12 表B ID    MODIFIED_TM 1

mysql如果在使用多表连查时,两张或多张表出现相同的字段名的解决办法

多表查询时,mysql语句为: select a.*,b.* from 表A名 as a left join 表B名 as b on a.字段名=b.字段名; 当出现两个相同字段名字时,比如相同字段名为name,就可以a.name as aname,b,name as bname; 语句为: select a.name as aname,b.name as bname from as a left join 表B名 as b on a.字段名=b.字段名; mysql如果在使用多表连查时,两张或

MySQL 创建表时,设置时间字段自己主动插入当前时间

MySQL 创建表时,设置时间字段自己主动插入当前时间 DROP TABLE IF EXISTS `CONTENT`; CREATE TABLE `CONTENT` ( `ID` char(20) NOT NULL, `CURRENT_TIME` timestamp not null default current_timestamp, PRIMARY KEY (`ID`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8;

MySQL 创建表时,设置时间字段自动插入当前时间

MySQL 创建表时,设置时间字段自动插入当前时间 DROP TABLE IF EXISTS `CONTENT`; CREATE TABLE `CONTENT` ( `ID` char(20) NOT NULL, `CURRENT_TIME` timestamp not null default current_timestamp, PRIMARY KEY (`ID`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8;

MySQL两千万数据优化&迁移

最近有一张2000W条记录的数据表需要优化和迁移.2000W数据对于MySQL来说很尴尬,因为合理的创建索引速度还是挺快的,再怎么优化速度也得不到多大提升.不过这些数据有大量的冗余字段和错误信息,极不方便做统计和分析.所以我需要创建一张新表,把旧表中的数据一条一条取出来优化后放回新表: 一. 清除冗余数据,优化字段结构 2000W数据中,能作为查询条件的字段我们是预知的.所以将这部分数据单独创建新的字段,对于有规则的数据合理改变字段结构,比如身份证就是varchar(18).对于不重要的数据我们