精华内容
下载资源
问答
  • 代表时间的名字
    千次阅读
    2021-01-18 18:31:52

    MySql中时间比较的实现

    unix_timestamp()

    unix_timestamp 函数可以接受一个参数,也可以不使用参数。

    它的返回值是一个无符号的整数。不使用参数,它返回自1970年1月1日0时0分0秒到现在所经过的秒数,

    如果 使用参数,参数的类型为时间类型或者时间类型的字符串表示,则是从1970-01-01 00:00:00到指定时间所经历的秒数。

    有了这个函数,就可以很自然地把时间比较转换为一个无符号整数的比较。

    例如,判断一个时间是否在一个区间内

    这里是一个使用日期函数的例子。

    下面的查询选择了所有记录,其date_col的值是在最后30天以内:

    DAYOFWEEK(date)

    返回日期date的星期索引(1=星期天,2=星期一, ……7=星期六)。这些索引值对应于ODBC标准。

    WEEKDAY(date)

    返回date的星期索引(0=星期一,1=星期二, ……6= 星期天)。

    DAYOFMONTH(date)

    返回date的月份中日期,在1到31范围内。

    DAYOFYEAR(date)

    返回date在一年中的日数, 在1到366范围内。

    MONTH(date)

    返回date的月份,范围1到12。

    DAYNAME(date)

    返回date的星期名字。

    MONTHNAME(date)

    返回date的月份名字。

    QUARTER(date)

    返回date一年中的季度,范围1到4。

    WEEK(date)

    WEEK(date,first)

    对于星期天是一周的第一天的地方,有一个单个参数,返回date的周数,范围在0到52。2个参数形式WEEK()允许你指定星期是否开始于星期天或星期一。如果第二个参数是0,星期从星期天开始,如果第二个参数是1,从星期一开始。

    YEAR(date)

    返回date的年份,范围在1000到9999。

    HOUR(time)

    返回time的小时,范围是0到23。

    MINUTE(time)

    返回time的分钟,范围是0到59。

    SECOND(time)

    回来time的秒数,范围是0到59。

    PERIOD_ADD(P,N)

    增加N个月到阶段P(以格式YYMM或YYYYMM)。以格式YYYYMM返回值。注意阶段参数P不是日期值。

    PERIOD_DIFF(P1,P2)

    返回在时期P1和P2之间月数,P1和P2应该以格式YYMM或YYYYMM。注意,时期参数P1和P2不是日期值。

    DATE_ADD(date,INTERVAL expr type)

    DATE_SUB(date,INTERVAL expr type)

    ADDDATE(date,INTERVAL expr type)

    SUBDATE(date,INTERVAL expr type)

    这些功能执行日期运算。对于MySQL 3.22,他们是新的。ADDDATE()和SUBDATE()是DATE_ADD()和DATE_SUB()的同义词。

    在MySQL 3.23中,你可以使用+和-而不是DATE_ADD()和DATE_SUB()。(见例子)date是一个指定开始日期的DATETIME或DATE值,expr是指定加到开始日期或从开始日期减去的间隔值一个表达式,expr是一个字符串;它可以以一个“-”开始表示负间隔。type是一个关键词,指明表达式应该如何被解释。EXTRACT(type FROM date)函数从日期中返回“type”间隔。下表显示了type和expr参数怎样被关联: type值 含义 期望的expr格式

    SECOND 秒 SECONDS

    MINUTE 分钟 MINUTES

    HOUR 时间 HOURS

    DAY 天 DAYS

    MONTH 月 MONTHS

    YEAR 年 YEARS

    MINUTE_SECOND 分钟和秒 "MINUTES:SECONDS"

    HOUR_MINUTE 小时和分钟 "HOURS:MINUTES"

    DAY_HOUR 天和小时 "DAYS HOURS"

    YEAR_MONTH 年和月 "YEARS-MONTHS"

    HOUR_SECOND 小时, 分钟, "HOURS:MINUTES:SECONDS"

    DAY_MINUTE 天, 小时, 分钟 "DAYS HOURS:MINUTES"

    DAY_SECOND 天, 小时, 分钟, 秒 "DAYS HOURS:MINUTES:SECONDS"

    MySQL在expr格式中允许任何标点分隔符。表示显示的是建议的分隔符。如果date参数是一个DATE值并且你的计算仅仅包含YEAR、MONTH和DAY部分(即,没有时间部分),结果是一个DATE值。否则结果是一个DATETIME值.

    如果你指定太短的间隔值(不包括type关键词期望的间隔部分),MySQL假设你省掉了间隔值的最左面部分。例如,

    如果你指定一个type是DAY_SECOND,值expr被希望有天、小时、分钟和秒部分。如果你象"1:10"这样指定值,

    MySQL假设日子和小时部分是丢失的并且值代表分钟和秒。换句话说,"1:10" DAY_SECOND以它等价于"1:10"

    MINUTE_SECOND 的方式解释,这对那MySQL解释TIME值表示经过的时间而非作为一天的时间的方式有二义性。如果你使用确实不正确的日期,

    结果是NULL。如果你增加MONTH、YEAR_MONTH或YEAR并且结果日期大于新月份的最大值天数,日子在新月用最大的天调整。

    注意,从前面的例子中词INTERVAL和type关键词不是区分大小写的。

    TO_DAYS(date)

    给出一个日期date,返回一个天数(从0年的天数)。

    FROM_DAYS(N)

    给出一个天数N,返回一个DATE值。

    DATE_FORMAT(date,format)

    根据format字符串格式化date值。下列修饰符可以被用在format字符串中: %M 月名字(January……December)

    %W 星期名字(Sunday……Saturday)

    %D 有英语前缀的月份的日期(1st, 2nd, 3rd, 等等)

    %Y 年, 数字, 4 位

    %y 年, 数字, 2 位

    %a 缩写的星期名字(Sun……Sat)

    %d 月份中的天数, 数字(00……31)

    %e 月份中的天数, 数字(0……31)

    %m 月, 数字(01……12)

    %c 月, 数字(1……12)

    %b 缩写的月份名字(Jan……Dec)

    %j 一年中的天数(001……366)

    %H 小时(00……23)

    %k 小时(0……23)

    %h 小时(01……12)

    %I 小时(01……12)

    %l 小时(1……12)

    %i 分钟, 数字(00……59)

    %r 时间,12 小时(hh:mm:ss [AP]M)

    %T 时间,24 小时(hh:mm:ss)

    %S 秒(00……59)

    %s 秒(00……59)

    %p AM或PM

    %w 一个星期中的天数(0=Sunday ……6=Saturday )

    %U 星期(0……52), 这里星期天是星期的第一天

    %u 星期(0……52), 这里星期一是星期的第一天

    %% 一个文字“%"

    所有的其他字符不做解释被复制到结果中。

    MySQL3.23中,在格式修饰符字符前需要%。在MySQL更早的版本中,%是可选的。

    TIME_FORMAT(time,format)

    这象上面的DATE_FORMAT()函数一样使用,但是format字符串只能包含处理小时、分钟和秒的那些格式修饰符。其他修饰符产生一个NULL值或0。

    CURDATE()

    CURRENT_DATE以'YYYY-MM-DD'或YYYYMMDD格式返回今天日期值,取决于函数是在一个字符串还是数字上下文被使用。

    CURTIME()

    CURRENT_TIME

    以'HH:MM:SS'或HHMMSS格式返回当前时间值,取决于函数是在一个字符串还是在数字的上下文被使用。

    NOW()

    SYSDATE()

    CURRENT_TIMESTAMP 以'YYYY-MM-DD HH:MM:SS'或YYYYMMDDHHMMSS格式返回当前的日期和时间,取决于函数是在一个字符串还是在数字的上下文被使用。

    UNIX_TIMESTAMP()

    UNIX_TIMESTAMP(date)

    如果没有参数调用,返回一个Unix时间戳记(从'1970-01-01 00:00:00'GMT开始的秒数)。如果UNIX_TIMESTAMP()用一 个date参数被调用,它返回从'1970-01-01 00:00:00' GMT开始的秒数值。date可以是一个DATE字符串、一个DATETIME 字符串、一个TIMESTAMP或以YYMMDD或YYYYMMDD格式的本地时间的一个数字。

    当UNIX_TIMESTAMP被用于一个TIMESTAMP列,函数将直接接受值,没有隐含的“string-to-unix-timestamp”变换。

    FROM_UNIXTIME(unix_timestamp)

    以'YYYY-MM-DD HH:MM:SS'或YYYYMMDDHHMMSS格式返回unix_timestamp参数所表示的值,取决于函数是在一个字符串

    还是或数字上下文中被使用。

    FROM_UNIXTIME(unix_timestamp,format)

    返回表示 Unix 时间标记的一个字符串,根据format字符串格式化。format可以包含与DATE_FORMAT()函数列出的条目同样的修饰符。

    SEC_TO_TIME(seconds)

    返回seconds参数,变换成小时、分钟和秒,值以'HH:MM:SS'或HHMMSS格式化,取决于函数是在一个字符串还是在数字 上下文中被使用。

    TIME_TO_SEC(time)

    返回time参数,转换成秒。

    MySql中时间比较的实现

    unix_timestamp()

    unix_timestamp 函数可以接受一个参数,也可以不使用参数。

    它的返回值是一个无符号的整数。不使用参数,它返回自1970年1月1日0时0分0秒到现在所经过的秒数,

    如果 使用参数,参数的类型为时间类型或者时间类型的字符串表示,则是从1970-01-01 00:00:00到指定时间所经历的秒数。

    有了这个函数,就可以很自然地把时间比较转换为一个无符号整数的比较。

    例如,判断一个时间是否在一个区间内

    这里是一个使用日期函数的例子。

    下面的查询选择了所有记录,其date_col的值是在最后30天以内:

    DAYOFWEEK(date)

    返回日期date的星期索引(1=星期天,2=星期一, ……7=星期六)。这些索引值对应于ODBC标准。

    WEEKDAY(date)

    返回date的星期索引(0=星期一,1=星期二, ……6= 星期天)。

    DAYOFMONTH(date)

    返回date的月份中日期,在1到31范围内。

    DAYOFYEAR(date)

    返回date在一年中的日数, 在1到366范围内。

    MONTH(date)

    返回date的月份,范围1到12。

    DAYNAME(date)

    返回date的星期名字。

    MONTHNAME(date)

    返回date的月份名字。

    QUARTER(date)

    返回date一年中的季度,范围1到4。

    WEEK(date)

    WEEK(date,first)

    对于星期天是一周的第一天的地方,有一个单个参数,返回date的周数,范围在0到52。2个参数形式WEEK()允许你指定星期是否开始于星期天或星期一。如果第二个参数是0,星期从星期天开始,如果第二个参数是1,从星期一开始。

    YEAR(date)

    返回date的年份,范围在1000到9999。

    HOUR(time)

    返回time的小时,范围是0到23。

    MINUTE(time)

    返回time的分钟,范围是0到59。

    SECOND(time)

    回来time的秒数,范围是0到59。

    PERIOD_ADD(P,N)

    增加N个月到阶段P(以格式YYMM或YYYYMM)。以格式YYYYMM返回值。注意阶段参数P不是日期值。

    PERIOD_DIFF(P1,P2)

    返回在时期P1和P2之间月数,P1和P2应该以格式YYMM或YYYYMM。注意,时期参数P1和P2不是日期值。

    DATE_ADD(date,INTERVAL expr type)

    DATE_SUB(date,INTERVAL expr type)

    ADDDATE(date,INTERVAL expr type)

    SUBDATE(date,INTERVAL expr type)

    这些功能执行日期运算。对于MySQL 3.22,他们是新的。ADDDATE()和SUBDATE()是DATE_ADD()和DATE_SUB()的同义词。

    在MySQL 3.23中,你可以使用+和-而不是DATE_ADD()和DATE_SUB()。(见例子)date是一个指定开始日期的DATETIME或DATE值,expr是指定加到开始日期或从开始日期减去的间隔值一个表达式,expr是一个字符串;它可以以一个“-”开始表示负间隔。type是一个关键词,指明表达式应该如何被解释。EXTRACT(type FROM date)函数从日期中返回“type”间隔。下表显示了type和expr参数怎样被关联: type值 含义 期望的expr格式

    SECOND 秒 SECONDS

    MINUTE 分钟 MINUTES

    HOUR 时间 HOURS

    DAY 天 DAYS

    MONTH 月 MONTHS

    YEAR 年 YEARS

    MINUTE_SECOND 分钟和秒 "MINUTES:SECONDS"

    HOUR_MINUTE 小时和分钟 "HOURS:MINUTES"

    DAY_HOUR 天和小时 "DAYS HOURS"

    YEAR_MONTH 年和月 "YEARS-MONTHS"

    HOUR_SECOND 小时, 分钟, "HOURS:MINUTES:SECONDS"

    DAY_MINUTE 天, 小时, 分钟 "DAYS HOURS:MINUTES"

    DAY_SECOND 天, 小时, 分钟, 秒 "DAYS HOURS:MINUTES:SECONDS"

    MySQL在expr格式中允许任何标点分隔符。表示显示的是建议的分隔符。如果date参数是一个DATE值并且你的计算仅仅包含YEAR、MONTH和DAY部分(即,没有时间部分),结果是一个DATE值。否则结果是一个DATETIME值.

    如果你指定太短的间隔值(不包括type关键词期望的间隔部分),MySQL假设你省掉了间隔值的最左面部分。例如,

    如果你指定一个type是DAY_SECOND,值expr被希望有天、小时、分钟和秒部分。如果你象"1:10"这样指定值,

    MySQL假设日子和小时部分是丢失的并且值代表分钟和秒。换句话说,"1:10" DAY_SECOND以它等价于"1:10"

    MINUTE_SECOND 的方式解释,这对那MySQL解释TIME值表示经过的时间而非作为一天的时间的方式有二义性。如果你使用确实不正确的日期,

    结果是NULL。如果你增加MONTH、YEAR_MONTH或YEAR并且结果日期大于新月份的最大值天数,日子在新月用最大的天调整。

    注意,从前面的例子中词INTERVAL和type关键词不是区分大小写的。

    TO_DAYS(date)

    给出一个日期date,返回一个天数(从0年的天数)。

    FROM_DAYS(N)

    给出一个天数N,返回一个DATE值。

    DATE_FORMAT(date,format)

    根据format字符串格式化date值。下列修饰符可以被用在format字符串中: %M 月名字(January……December)

    %W 星期名字(Sunday……Saturday)

    %D 有英语前缀的月份的日期(1st, 2nd, 3rd, 等等)

    %Y 年, 数字, 4 位

    %y 年, 数字, 2 位

    %a 缩写的星期名字(Sun……Sat)

    %d 月份中的天数, 数字(00……31)

    %e 月份中的天数, 数字(0……31)

    %m 月, 数字(01……12)

    %c 月, 数字(1……12)

    %b 缩写的月份名字(Jan……Dec)

    %j 一年中的天数(001……366)

    %H 小时(00……23)

    %k 小时(0……23)

    %h 小时(01……12)

    %I 小时(01……12)

    %l 小时(1……12)

    %i 分钟, 数字(00……59)

    %r 时间,12 小时(hh:mm:ss [AP]M)

    %T 时间,24 小时(hh:mm:ss)

    %S 秒(00……59)

    %s 秒(00……59)

    %p AM或PM

    %w 一个星期中的天数(0=Sunday ……6=Saturday )

    %U 星期(0……52), 这里星期天是星期的第一天

    %u 星期(0……52), 这里星期一是星期的第一天

    %% 一个文字“%"

    所有的其他字符不做解释被复制到结果中。

    MySQL3.23中,在格式修饰符字符前需要%。在MySQL更早的版本中,%是可选的。

    TIME_FORMAT(time,format)

    这象上面的DATE_FORMAT()函数一样使用,但是format字符串只能包含处理小时、分钟和秒的那些格式修饰符。其他修饰符产生一个NULL值或0。

    CURDATE()

    CURRENT_DATE以'YYYY-MM-DD'或YYYYMMDD格式返回今天日期值,取决于函数是在一个字符串还是数字上下文被使用。

    CURTIME()

    CURRENT_TIME

    以'HH:MM:SS'或HHMMSS格式返回当前时间值,取决于函数是在一个字符串还是在数字的上下文被使用。

    NOW()

    SYSDATE()

    CURRENT_TIMESTAMP 以'YYYY-MM-DD HH:MM:SS'或YYYYMMDDHHMMSS格式返回当前的日期和时间,取决于函数是在一个字符串还是在数字的上下文被使用。

    UNIX_TIMESTAMP()

    UNIX_TIMESTAMP(date)

    如果没有参数调用,返回一个Unix时间戳记(从'1970-01-01 00:00:00'GMT开始的秒数)。如果UNIX_TIMESTAMP()用一 个date参数被调用,它返回从'1970-01-01 00:00:00' GMT开始的秒数值。date可以是一个DATE字符串、一个DATETIME 字符串、一个TIMESTAMP或以YYMMDD或YYYYMMDD格式的本地时间的一个数字。

    当UNIX_TIMESTAMP被用于一个TIMESTAMP列,函数将直接接受值,没有隐含的“string-to-unix-timestamp”变换。

    FROM_UNIXTIME(unix_timestamp)

    以'YYYY-MM-DD HH:MM:SS'或YYYYMMDDHHMMSS格式返回unix_timestamp参数所表示的值,取决于函数是在一个字符串

    还是或数字上下文中被使用。

    FROM_UNIXTIME(unix_timestamp,format)

    返回表示 Unix 时间标记的一个字符串,根据format字符串格式化。format可以包含与DATE_FORMAT()函数列出的条目同样的修饰符。

    SEC_TO_TIME(seconds)

    返回seconds参数,变换成小时、分钟和秒,值以'HH:MM:SS'或HHMMSS格式化,取决于函数是在一个字符串还是在数字 上下文中被使用。

    TIME_TO_SEC(time)

    返回time参数,转换成秒。

    MySql中时间比较的实现

    unix_timestamp()

    unix_timestamp 函数可以接受一个参数,也可以不使用参数。

    它的返回值是一个无符号的整数。不使用参数,它返回自1970年1月1日0时0分0秒到现在所经过的秒数,

    如果 使用参数,参数的类型为时间类型或者时间类型的字符串表示,则是从1970-01-01 00:00:00到指定时间所经历的秒数。

    有了这个函数,就可以很自然地把时间比较转换为一个无符号整数的比较。

    例如,判断一个时间是否在一个区间内

    这里是一个使用日期函数的例子。

    下面的查询选择了所有记录,其date_col的值是在最后30天以内:

    DAYOFWEEK(date)

    返回日期date的星期索引(1=星期天,2=星期一, ……7=星期六)。这些索引值对应于ODBC标准。

    WEEKDAY(date)

    返回date的星期索引(0=星期一,1=星期二, ……6= 星期天)。

    DAYOFMONTH(date)

    返回date的月份中日期,在1到31范围内。

    DAYOFYEAR(date)

    返回date在一年中的日数, 在1到366范围内。

    MONTH(date)

    返回date的月份,范围1到12。

    DAYNAME(date)

    返回date的星期名字。

    MONTHNAME(date)

    返回date的月份名字。

    QUARTER(date)

    返回date一年中的季度,范围1到4。

    WEEK(date)

    WEEK(date,first)

    对于星期天是一周的第一天的地方,有一个单个参数,返回date的周数,范围在0到52。2个参数形式WEEK()允许你指定星期是否开始于星期天或星期一。如果第二个参数是0,星期从星期天开始,如果第二个参数是1,从星期一开始。

    YEAR(date)

    返回date的年份,范围在1000到9999。

    HOUR(time)

    返回time的小时,范围是0到23。

    MINUTE(time)

    返回time的分钟,范围是0到59。

    SECOND(time)

    回来time的秒数,范围是0到59。

    PERIOD_ADD(P,N)

    增加N个月到阶段P(以格式YYMM或YYYYMM)。以格式YYYYMM返回值。注意阶段参数P不是日期值。

    PERIOD_DIFF(P1,P2)

    返回在时期P1和P2之间月数,P1和P2应该以格式YYMM或YYYYMM。注意,时期参数P1和P2不是日期值。

    DATE_ADD(date,INTERVAL expr type)

    DATE_SUB(date,INTERVAL expr type)

    ADDDATE(date,INTERVAL expr type)

    SUBDATE(date,INTERVAL expr type)

    这些功能执行日期运算。对于MySQL 3.22,他们是新的。ADDDATE()和SUBDATE()是DATE_ADD()和DATE_SUB()的同义词。

    在MySQL 3.23中,你可以使用+和-而不是DATE_ADD()和DATE_SUB()。(见例子)date是一个指定开始日期的DATETIME或DATE值,expr是指定加到开始日期或从开始日期减去的间隔值一个表达式,expr是一个字符串;它可以以一个“-”开始表示负间隔。type是一个关键词,指明表达式应该如何被解释。EXTRACT(type FROM date)函数从日期中返回“type”间隔。下表显示了type和expr参数怎样被关联: type值 含义 期望的expr格式

    SECOND 秒 SECONDS

    MINUTE 分钟 MINUTES

    HOUR 时间 HOURS

    DAY 天 DAYS

    MONTH 月 MONTHS

    YEAR 年 YEARS

    MINUTE_SECOND 分钟和秒 "MINUTES:SECONDS"

    HOUR_MINUTE 小时和分钟 "HOURS:MINUTES"

    DAY_HOUR 天和小时 "DAYS HOURS"

    YEAR_MONTH 年和月 "YEARS-MONTHS"

    HOUR_SECOND 小时, 分钟, "HOURS:MINUTES:SECONDS"

    DAY_MINUTE 天, 小时, 分钟 "DAYS HOURS:MINUTES"

    DAY_SECOND 天, 小时, 分钟, 秒 "DAYS HOURS:MINUTES:SECONDS"

    MySQL在expr格式中允许任何标点分隔符。表示显示的是建议的分隔符。如果date参数是一个DATE值并且你的计算仅仅包含YEAR、MONTH和DAY部分(即,没有时间部分),结果是一个DATE值。否则结果是一个DATETIME值.

    如果你指定太短的间隔值(不包括type关键词期望的间隔部分),MySQL假设你省掉了间隔值的最左面部分。例如,

    如果你指定一个type是DAY_SECOND,值expr被希望有天、小时、分钟和秒部分。如果你象"1:10"这样指定值,

    MySQL假设日子和小时部分是丢失的并且值代表分钟和秒。换句话说,"1:10" DAY_SECOND以它等价于"1:10"

    MINUTE_SECOND 的方式解释,这对那MySQL解释TIME值表示经过的时间而非作为一天的时间的方式有二义性。如果你使用确实不正确的日期,

    结果是NULL。如果你增加MONTH、YEAR_MONTH或YEAR并且结果日期大于新月份的最大值天数,日子在新月用最大的天调整。

    注意,从前面的例子中词INTERVAL和type关键词不是区分大小写的。

    TO_DAYS(date)

    给出一个日期date,返回一个天数(从0年的天数)。

    FROM_DAYS(N)

    给出一个天数N,返回一个DATE值。

    DATE_FORMAT(date,format)

    根据format字符串格式化date值。下列修饰符可以被用在format字符串中: %M 月名字(January……December)

    %W 星期名字(Sunday……Saturday)

    %D 有英语前缀的月份的日期(1st, 2nd, 3rd, 等等)

    %Y 年, 数字, 4 位

    %y 年, 数字, 2 位

    %a 缩写的星期名字(Sun……Sat)

    %d 月份中的天数, 数字(00……31)

    %e 月份中的天数, 数字(0……31)

    %m 月, 数字(01……12)

    %c 月, 数字(1……12)

    %b 缩写的月份名字(Jan……Dec)

    %j 一年中的天数(001……366)

    %H 小时(00……23)

    %k 小时(0……23)

    %h 小时(01……12)

    %I 小时(01……12)

    %l 小时(1……12)

    %i 分钟, 数字(00……59)

    %r 时间,12 小时(hh:mm:ss [AP]M)

    %T 时间,24 小时(hh:mm:ss)

    %S 秒(00……59)

    %s 秒(00……59)

    %p AM或PM

    %w 一个星期中的天数(0=Sunday ……6=Saturday )

    %U 星期(0……52), 这里星期天是星期的第一天

    %u 星期(0……52), 这里星期一是星期的第一天

    %% 一个文字“%"

    所有的其他字符不做解释被复制到结果中。

    MySQL3.23中,在格式修饰符字符前需要%。在MySQL更早的版本中,%是可选的。

    TIME_FORMAT(time,format)

    这象上面的DATE_FORMAT()函数一样使用,但是format字符串只能包含处理小时、分钟和秒的那些格式修饰符。其他修饰符产生一个NULL值或0。

    CURDATE()

    CURRENT_DATE以'YYYY-MM-DD'或YYYYMMDD格式返回今天日期值,取决于函数是在一个字符串还是数字上下文被使用。

    CURTIME()

    CURRENT_TIME

    以'HH:MM:SS'或HHMMSS格式返回当前时间值,取决于函数是在一个字符串还是在数字的上下文被使用。

    NOW()

    SYSDATE()

    CURRENT_TIMESTAMP 以'YYYY-MM-DD HH:MM:SS'或YYYYMMDDHHMMSS格式返回当前的日期和时间,取决于函数是在一个字符串还是在数字的上下文被使用。

    UNIX_TIMESTAMP()

    UNIX_TIMESTAMP(date)

    如果没有参数调用,返回一个Unix时间戳记(从'1970-01-01 00:00:00'GMT开始的秒数)。如果UNIX_TIMESTAMP()用一 个date参数被调用,它返回从'1970-01-01 00:00:00' GMT开始的秒数值。date可以是一个DATE字符串、一个DATETIME 字符串、一个TIMESTAMP或以YYMMDD或YYYYMMDD格式的本地时间的一个数字。

    当UNIX_TIMESTAMP被用于一个TIMESTAMP列,函数将直接接受值,没有隐含的“string-to-unix-timestamp”变换。

    FROM_UNIXTIME(unix_timestamp)

    以'YYYY-MM-DD HH:MM:SS'或YYYYMMDDHHMMSS格式返回unix_timestamp参数所表示的值,取决于函数是在一个字符串

    还是或数字上下文中被使用。

    FROM_UNIXTIME(unix_timestamp,format)

    返回表示 Unix 时间标记的一个字符串,根据format字符串格式化。format可以包含与DATE_FORMAT()函数列出的条目同样的修饰符。

    SEC_TO_TIME(seconds)

    返回seconds参数,变换成小时、分钟和秒,值以'HH:MM:SS'或HHMMSS格式化,取决于函数是在一个字符串还是在数字 上下文中被使用。

    TIME_TO_SEC(time)

    返回time参数,转换成秒。

    更多相关内容
  • 算法时间复杂度分析(一)

    万次阅读 2019-07-03 22:50:59
    具体点来讲就是我们在实现某一种算法的时候,最终目的就是要求计算机(CPU)在最短的时间内,用最少的内存稳定的输出正确的结果。这一章节主要来理解 “快”,至于“省” 和 “稳”,我会在后续章节进行讲解。 那如何...

    金庸武侠中描述一种武功招式的时候,经常会用到 “快、准、狠” 这3个字眼。同样,在计算机中我们衡量一种算法的执行效率的时候也会考量3个方面:“快、省、稳”。

    具体点来讲就是我们在实现某一种算法的时候,最终目的就是要求计算机(CPU)在最短的时间内,用最少的内存稳定的输出正确的结果。这一章节主要来理解 “快”,至于“省” 和 “稳”,我会在后续章节进行讲解。

    那如何来判断某一段代码运行的是否足够快呢??有没有一种标准让我们能迅速判断出某A算法比某B算法好呢??大O复杂度表示法 就是我们要寻找的答案,一般情况下,大O复杂度表示法是用来表示算法性能最常见的正式标记法,接下来就一起来看下这个大O复杂度表示法是个什么东东。

    算法时间复杂度的由来

    在理解什么是时间复杂度之前,我们需要先了解为什么需要复杂度分析。为了更形象的理解这个问题,我们用一段具体的代码来深入分析。这里有段非常简单的代码,实现了 1,2,3…n 的累加和。

    案例1:
    // 计算 1, 2, 3…n 的累加和
    public class Test {
        int cal(int n) {
            int sum = 0;
            int i = 1;
            for (; i <= n; ++i) {
                sum = sum + i;
            }
            return sum;
        }
    }
    

    如果我们要测试以上面这段代码的执行效率,该如何去测试呢 ??

    起初,我们能想到最简单最直接的方法就是把代码在机器上跑一遍,通过统计、监控,就能得到这段代码所执行的时间和占用的内存大小。既然是这样那为什么还要做时间、空间复杂度分析呢?复杂度分析会比我实实在在跑一遍得到的数据更准确吗?

    首先,我可以肯定的说,这种评估算法的执行效率是正确的,并且在某些数据结构和算法的书籍中还专门给这种方法起了个名字—事后统计法。但是这种统计方法有非常大的局限性

    1 测试结果极度依赖测试环境
    测试环境中的硬件不同会对测试结果有很大的影响。比如案例1的代码分别跑在Intel Core i9 和 Intel Core i3的CPU上运行,很明显i9要比i3快很多。再比如我们在同一时刻在i9上执行运算1024/3,并在i3上运算10+10。正常来讲 10+10 操作比 1024/3 的操作简单很多,但是因为硬件性能的影响,导致i9处理器更快的得出结果。难道我们能说 1024/3 比 10+10 算法性能更高?显然不能!即使是一个初级工程师也应该知道除法运算比加法运算消耗更高!这样就造成我们很难用一个统一的标准去衡量执行时间。

    2 测试结果受数据规模的影响很大
    后续我们会讲到多种排序算法。对于同一种排序算法,比如快速排序或者插入排序,待排序数据的有序度不一样,排序的执行时间就会有很大差别。另外,对于不同的排序算法,测试数据规模不同也可能导致无法真实的反应排序的性能。比如,我们手上有一组小规模的数据需要做排序操作
    int arr[] = {4, 10, 42, 1, 9};
    如果分别使用插入排序和快速排序对 arr 进行排序,我们会发现插入排序比快速排序更快。但是这样不能说明插入排序的性能就比快速排序更高。因为随着arr规模的增长,它的性能会越来越低于快速排序。

    综上所述,我们需要一个不用具体的测试数据来测试,用“肉眼”就可以粗略的估计算法的执行效率的方法。而这种方法就是我们今天要讲的 时间复杂度分析方法


    代码复杂度的分析过程

    算法的执行时间等于它所有基本操作执行时间之和, 而一条基本操作的执行时间等于它执行的次数和每一次执行的时间的积,如下:

    算法的执行时间 = 操作1 + 操作2 + ... + 操作n
    操作的执行时间 = 操作执行次数 * 执行一次的时间
    

    我们还是以案例1的代码为例。我们知道java代码经过编译之后,最终会被以字节码的方式由JVM来解释执行相应的指令,那我们可以通过如下命令,分别对Test.java进行编译并查看字节码

    javac Test.java    // 编译java代码,生成.class字节码文件
    javap -c Test      // 使用javap工具查看字节码指令
    

    执行上述的javap命令之后,得到的字节码指令如下:
    在这里插入图片描述
    可以看出,案例1主要包含的字节码指令就是 iconst_ istore_ iload_ if_icmpgt iadd 等指令,具体每一条指令所代表的意义我已经添加注释(这块内容有点多,但建议耐心仔细阅研读一下,彻底理解每一条指令的意义,也有助于你理解Java代码的运行机制)

    然而存在一个问题,不同的编程语言,不同的编译器,或不同的CPU等因素将导致执行一次指令操作的时间各不相同,这样的结果会使算法的比较产生歧义, 于是我们假定所有计算机执行相同的一次指令操作所需时间相同,统一定为 unit_time 。而把算法中基本操作所执行的 执行次数n 作为量度。就是说我们把算法的 运行时间 简单地用基本操作的 运行次数 来代替了, 进而将分析 运行时间 转移到某一行代码的 运行次数

    其中unit_time在不同的CPU上可能不一样,比如在i9 Core上有可能是0.01ms,而在i3 Core上可能就是0.05ms。在这个假设的基础上,我们就可以计算出这段代码的总执行时间。

    字节码指令是自上而下顺序执行的,所以从指令0开始执行。0-3指令都执行一遍,也就是 **unit_time * 4** 。从指令 4 到指令 19,从图中两个红色箭头也能看出存在循环操作,而

    循环的依据就是if_icmpgt指令。

    if_icmpgt 指令判断的是操作数栈顶的两个元素的大小,也就是 i 与 n 的大小,因为从指令 4 到指令 19 一共包含10条指令,所以4~19的指令执行次数为:10 * n * unit_time

    综上所述,这段代码总的执行时间就是:

    4 * unit_time + 10 * n * unit_time
    = (10n + 4) * unit_time

    按照这个分析思路,我们再来看下面这段代码。

    案例2
    void cal(int n) {
       int sum = 0;
       int i = 1;
       int j = 1;
       for (; i <= n; ++i) {
         j = 1;
         for (; j <= n; ++j) {
           sum = sum +  i * j;
         }
       }
    }
    

    案例2的代码与案例1的唯一区别就是多了一层for循环。经过javac和javap之后的字节码指令如下:
    在这里插入图片描述

    分析过程同案例1的一样,具体就不再赘述了。最终分析案例2总的执行时间为:(45n² + 5n + 5) * unit_time

    算法时间复杂度表示法

    上面我们通过分析字节码指令,计算出案例1和案例2代码片段的具体运行时间,如下:

    案例1运行时间 -> (10n + 4) * unit_time
    案例2运行时间 -> (45n² + 5n + 5) * unit_time

    尽管我们不知道 unit_time 的具体值,但是通过对案例1和案例2代码执行时间的推导过程,我们可以得到一个非常重要的规律,那就是 所有代码的执行时间 T(n) 与每行代码的执行次数 n 成正比。

    我们可以把这个规律总结成一个公式,注意,大O要登场了
     T(n) = O(f()n)
    

    来解释一下这个公式:T(n)表示代码的执行时间;n表示数据规模的大小;f(n)是一个函数,表示每行代码执行的次数总和。函数f(n)外部的大O表示代码的执行时间 T(n) 与 f(n) 表达式成正比。

    注意:大 O 时间复杂度实际上并不具体表示代码真正的执行时间,而是表示代码执行时间随数据规模增长的变化趋势,所以,
    也叫作渐进时间复杂度(aymptotic time complexity),简称时间复杂度。或者说它表达的是随着数据规模n的增长,代码执行时间的增长趋势(类似于物理中的加速度)

    既然大O表示的是一种增长趋势而不是具体时间,那在我们先前计算出的等式中的 unit_time 也就没什么太大意义了。所以,我们可以将等式中的 unit_time 去掉。

    案例1运行时间 -> (10n + 4) *unit_time
    案例2运行时间 -> (45n² + 5n + 5) *unit_time

    最终案例1中的 T(n) = O(10n + 4),案例2中的 T(n) = O(45n² + 5n + 5)这就是大 O 时间复杂度表示法

    现在我们了解了大O表示法的演进过程,接下来我们再把视线重新放到案例2的复杂度表示上 T(n) = O(45n² + 5n + 5),细看之下,此表达式的函数f(n)部分由3部分组成 (45n² 高阶项) 、 (5n 低阶项) 、 (5 常数项)

    现在我们假设 n = 3 时

    45n² 高阶项 : 45 * 3 * 3 = 405 占总时间的 95.29%
    5n 低阶项 : 5 * 3 = 15
    5 常数项 : 5

    我们已经看到,n²高阶项部分占据了运行时间的大部分比例。

    现在,考虑当n = 100时的结果,如下

    45n² 高阶项 : 45 * 100 * 100 = 4500 占总时间的 99.98%
    5n 低阶项 : 5 * 10 = 50
    5 常数项 : 5

    可以看到,n²的部分已经占据了几乎整个运行时间,同时其它项的影响力变得更小,试想一下,如果n = 1000, 将占用多少时间!

    由此我们可以看出,当我们以增长率的角度去观察 f(n) 函数的时,有几件事就变得很明显:

    • 首先,我们可以忽略常数项,因为随着n的值变得越来越大,常数项最终变得可忽略不计
    • 其次,我们可以忽略系数
    • 最后,我们只需要考虑高阶项的因子即可,不需要考虑低阶项

    综上所述:案例1和案例2的终极大O时间复杂度表达式可以简化为:

    案例1: T(n) = O(10n + 4) = O(n) // 时间复杂度为线性级别
    案例2: T(n) = O(45n² + 5n + 5) = O(n²) // 时间复杂度为指数级别

    时间复杂度简单规则:

    前面介绍了大 O 时间复杂度的由来和表示方法。现在我们来看下,当我们拿到一段代码时,如何去分析这一段代码的时间复杂度?

    以下是几个比较实用的方法,你可以参考一下:

    1 只关注循环执行次数最多的一段代码

    我刚才说了,大O这种复杂度表示方法只是表示一种变化趋势。我们通常会忽略掉公式中的常量、低阶、系数,只需要记录一个最大阶的量级就可以了。

    所以,我们在分析一个算法、一段代码的时间复杂度的时候,也只关注循环执行次数最多的那一段代码即可。这段代码执行次数的n的量级,就是争端要分析代码的时间复杂度。

    为了便于你理解,我还拿前面的例子来说明。

    int cal(int n) {
       int sum = 0;
       int i = 1;
       for (; i <= n; ++i) {
         sum = sum + i;
       }
       return sum;
    }
    

    其中第 2、3 行代码都是常量级的执行时间,与 n 的大小无关,所以对于复杂度并没有影响。循环执行次数最多的是第 4、5行代码,

    所以这块代码要重点分析。前面我们也讲过,这两行代码被执行了 n 次,所以总的时间复杂度就是 O(n)。

    2 加法法则:总复杂度登记量级最大的那段代码的复杂度

    我这里还有一段代码。你可以先试着分析一下,然后再往下看跟我的分析思路是否一样

    int cal(int n) {
       int sum_1 = 0;
       int p = 1;
       for (; p < 100; ++p) {
         sum_1 = sum_1 + p;
       }
       int sum_2 = 0;
       int q = 1;
       for (; q < n; ++q) {
         sum_2 = sum_2 + q;
       }
       int sum_3 = 0;
       int i = 1;
       int j = 1;
       for (; i <= n; ++i) {
         j = 1;
         for (; j <= n; ++j) {
           sum_3 = sum_3 +  i * j;
         }
       }
       return sum_1 + sum_2 + sum_3;
    }
    

    这个代码分为三部分,分别是求 sum_1、sum_2、sum_3。我们可以分别分析每一部分的时间复杂度,然后把它们放到一块儿,再取一个量级最大的作为整段代码的复杂度。

    第一段的时间复杂度是多少呢?这段代码循环执行了 100 次,所以是一个常量的执行时间,跟 n 的规模无关。

    这里我要再强调一下,即便这段代码循环 10000 次、100000 次,只要是一个已知的数,跟 n 无关,照样也是常量级的执行时间。当 n 无限大的时候,就可以忽略。尽管对代码的执行时间会有很大影响,但是回到时间复杂度的概念来说,它表示的是一个算法执行效率与数据规模增长的变化趋势,所以不管常量的执行时间多大,我们都可以忽略掉。因为它本身对增长趋势并没有影响。

    那第二段代码和第三段代码的时间复杂度是多少呢?答案是 O(n) 和 O(n2),你应该能容易就分析出来,我就不啰嗦了。

    综合这三段代码的时间复杂度,我们取其中最大的量级。所以,整段代码的时间复杂度就为 O(n2)。也就是说:总的时间复杂度就等于量级最大的那段代码的时间复杂度。那我们将这个规律抽象成公式就是:

    如果 T1(n)=O(f(n)),T2(n)=O(g(n));
    那么 T(n) = T1(n)+T2(n) = max(O(f(n)), O(g(n))) = O(max(f(n), g(n)))

    3 乘法法则:嵌套代码的复杂度等于嵌套内外代码复杂度的乘积

    我刚讲了一个复杂度分析中的加法法则,这儿还有一个乘法法则。当分析一个算法的运行时间时,如果一个任务的执行引起了另一个任务的执行,可以运用此规则。例如,在一个嵌套循环中,外层迭代为T1, 内层迭代为T2, 如果T1 = m, T2 = n, 那么运行结果表示为O(m * n)。

    落实到具体的代码上,我们可以把乘法法则看成是嵌套循环,我举个例子给你解释一下

    int cal(int n) {
       int ret = 0;
       int i = 1;
       for (; i < n; ++i) {
         ret = ret + f(i);
       }
    }
    int f(int n) {
      int sum = 0;
      int i = 1;
      for (; i < n; ++i) {
        sum = sum + i;
      }
      return sum;
    }
    

    我们单独看 cal() 函数。假设 f() 只是一个普通的操作,那第 4~6 行的时间复杂度就是,T1(n) = O(n)。但 f() 函数本身不是一个简单的操作,它的时间复杂度是 T2(n) = O(n),所以,整个 cal() 函数的时间复杂度就是,

    T(n) = T1(n) * T2(n) = O(n*n) = O(n²)。

    我刚刚讲了三种复杂度的分析技巧。不过,你并不用刻意去记忆。实际上,复杂度分析这个东西关键在于“熟练”。你只要多看案例,多分析,就能做到“无招胜有招”。

    总结

    这一节我们首先学习了为什么要使用算法复杂度分析,主要是因为外部硬件环境与数据规模不一样,会导致我们的计算结果出现偏差。因此需要一套不依赖具体测试数据的机制来衡量算法的性能。

    接下里我们通过分析两个案例代码的粗略执行时间,进而引出了大O复杂度表示法,它是一种正式的表达算法时间复杂度的表示法。需要注意的是大O表达式并不表示某种算法具体的运行时间,而是表示代码执行时间随数据规模增长的变化趋势。

    最后我总结了几点分析代码复杂度时的简单规则,或者说是技巧。通过这些技巧有助于我们更快的分析出某一段代码的时间复杂度时多少。

    更多文章可以扫描二维码,关注算法公众号

    展开全文
  • 这篇断断续续写了很久,是因为时间这个坑真的可以越挖越深,本来名字叫“关于时间戳的一切”,打算总结几种时间格式到时间戳的转换方法,结果越总结发现自己自己不懂的越多,后续还会再补充的。这次关于时间的探索让...

    这篇断断续续写了很久,是因为时间这个坑真的可以越挖越深,本来名字叫“关于时间戳的一切”,打算总结几种时间格式到时间戳的转换方法,结果越总结发现自己自己不懂的越多,后续还会再补充的。这次关于时间的探索让我重新学了Date对象、Unix时间戳、时间的几种标准、还重学了地理等。

    ---------------最后看下面这块------------

    遇到两个问题,js中使用new Date()取出的时间结果会因为输入时间精度、格式不同而不同:在精度无时分秒YYYY-MM-DD和有时分秒YYYY-MM-DD hh:mm:ss 之后使用getTime取到的时间戳不同,多出8小时;以及在YYYY-MM-DD和YYYY/MM/DD返回的结果不同,也是差8小时。如图:

       

    从测试结果来看:
    new Date('1970-01-01')和new Date('1970-01-01 08:00:00')的getTime()结果相同,我有点懵b;
    继续看new Date('1970/01/01')和new Date('1970-01-01') ,输出结果后者多了8小时;

    emmm...瞬间感到很可怕,一直以为'1970-01-01'等于'1970-01-01 00:00:00' 、'1970-01-01''等于1970/01/01'的我,会不会过去的代码中制造了什么错误..

    仔细对比分析有了两个推测:


    1,new Date('/') 接收的是当地时间,没写时分秒自动补0,输入与输出一致

    2,new Date('-') 接收的是UTC时间,没写时分秒自动补0,输出本地时间;写了时分秒也就是YYYY-MM-DD hh:mm:ss格式时接收的是当地时间,输入与输出一致

    ---------------------最后看上面这块-----------------------


    一、时间戳和时区

    1,Unix时间戳(Unix timestamp)定义为从1970年01月01日00时00分00秒(UTC)起至现在经过的总秒数。

    2,JavaScript中提供的Date对象可以将所有时间都存为一个整数,表示从1970年1月1日00:00:00起的总毫秒数。

    ↑这两点意味着:
    1)使用unix时间戳作为参数需要乘以1000得到毫秒数Date()对象才能正确接收,getTime时需要除以1000才能得到时间戳。
    2)js中判断一个时间戳的精度,可以靠时间戳长度:精确到秒是10位;精确到毫秒是13位。

    3)在js中利用时间戳很容易计算出一个间隔恒定的时间轴,或者给一个时间推算出某段时间之前or之后的具体日期,或者日期比较

    3,北京时间 = GMT+8 = UTC+8

    GMT是格林尼治平均时,UTC是世界标准时/协调世界时/原子时。前者是太阳时,GMT的正午为太阳在格林尼治上空最高点的时间,但是这个时间受地球自转速度影响所以每一天的时间都存在一定误差;后者由原子能级跃迁振动频率计时得出误差很小。GMT几乎等于UTC。北京时间采用东八区时间,复习一下地理:本初子午线是0度经线穿过格林尼治天文台,日期变更线基于东西经重合的180度经线。全球24个时区里,我们在东经120度落在东八区,由于地球自西向东旋转我们要比英国的盆友更早迎接新的一天的早中晚,时间上就是早了8个小时。当英国时间为正午时,我们的时间为晚上8点,这时全球都在同一天。

    ↑这意味着:
    Unix时间戳起始时间是我们北京时间的1970年01月01日08时00分00秒


    二、几种表示时间的格式/标准

    1,RFC-2822标准格式,形如:
    Sun Apr 08 2018 11:38:39 GMT+0800(CST)

    2,ISO-8601标准格式,其中一种常见的格式形如:
    2018-04-08T11:38:39+08:00   日期用“-”相隔,与时间用“T”连接
    2018-04-08T11:38:39Z     Z代表UTC时间,Z也可写成00:00


    三、js中的Date对象

    1,Date()作为函数不管有无参数直接调用获取的是当前的日期和时间,结果是表示当前时间的字符串,并且是已经转换为当前时区的时间;

    2,Date()作为构造函数无参数时使用new Date(),结果是表示当前时间的对象,并且是已经转换为当前时区的时间

         

    GMT+0800(CST)代表东八区,CST(china standard time)表示中国标准时间

    3,作为构造函数时,Date对象可以接收多种格式的参数,用法如下:

    new Date()   //返回当前时间
    new Date(number)   //number为自1970.01.01 00:00:00经过的毫秒数,返回number毫秒后的时间

    new Date(string)   //string代表时间的字符串,返回这个时间的Date对象
    new Date(year, month, day, hours, minutes, seconds, milliseconds)

    构造出的日期用来显示时会转为本地时间(toString方法)
    当参数为string时,写法很多,所有能被Date.parse()解析的字符串都可以作为参数。需要注意的是,es5中,当日期以“-”作为分隔符且月日数字小于10前面补0(如2018-09-03),和数字大于9(如2018-10-10),JavaScript接收时会把字符串当作ISO-8601格式按照0时区也就是UTC时间来接收;es6改为没有指定时区就会默认为当地时间。其他格式如2018/10/10都是非ISO-8601格式接收当作本地时间。'2018-04-08T00:00:00Z'是UTC,'2018-04-08 00:00:00'非UTC等于ISO-8601格式的'2018-04-08T00:00:00+08:00'。
    ↑这也就解释了开篇的疑惑,推测基本正确,只是有“-”不一定是UTC,而且推测的时候对于GMT和UTC没有做精确区分。真正原因上面这段。

    4,日期的运算
    两个日期对象相减,得到相差的毫秒数;相加为两个日期字符串的相加。

    ↑这意味着算时间差时无需先getTime,可以直接相减。

    5,计算1970-01-01 00:00:00至指定日期的毫秒数
    1)new Date('日期').getTime()
    2) Date.parse('日期')
    3)Date.UTC('日期')  该日期为UTC时间,不会根据写法不同做本地转换
    4)Date.now()  至当前时间,可用来计算代码运行时间
    5) +new Date('日期')  等于  new Date('日期').getTime()


    四、几种标准的时间与时间戳的转换(js中时间戳的N种获取方式)

    1, js获取某一时间的时间戳
    上面第三点第5标题下的任意一种方法获取1970-01-01 00:00:00至指定日期的毫秒数 为ms,
    Math.round(ms/1000) 
    如果是当前时间直接除以1000也可以Math.round(new Date() / 1000)

    2,时间戳转时间字符串
    1)转“2018-04-08”或“2018/04/08”或任意组装的格式
    先用new Date(UnixTimeStamp)将时间戳转为Date类型对象,再使用getFullYear(),getMonth(),getDate(),getHours(),getMinutes(),getSeconds()分别获取年月日时分秒,注意的是getMonth()返回数字是0~11,所以换成可读的月份要加1。
    2)转ISO-8061格式的UTC时间和本地易读的时间
    toJSON(),toISOString(),toLocaleString()如图

    3)转RFC-2822时间,也就是new Date()出来的时间的长相,之前说了typeof new Date()是对象,把对象变为字符串用toString()


    参考资料:

    https://segmentfault.com/a/1190000004292140
    https://www.xuanfengge.com/js-date-object.html
    http://blog.sina.com.cn/s/blog_65415e870102wwnq.html



    展开全文
  • 原标题:微信小程序取名|如何修改名字|取名规则!在过去的建站使其曾有「域名比老板重要」的说法,而现在,微信小程序的名字也至关重要,拥有一个好的名字,将能带来众多的流量。小程序名字虽然只是个简单的符号,但...

    原标题:微信小程序取名|如何修改名字|取名规则!

    在过去的建站使其曾有「域名比老板重要」的说法,而现在,微信小程序的名字也至关重要,拥有一个好的名字,将能带来众多的流量。小程序名字虽然只是个简单的符号,但呈现给外界的价值和意义却非同小可。所以微信小程序名字的选取,对于商家和企业来说有着重要的商业意义。小程序的名字往往决定了用户的第一印象,选取一个既好记又贴合企业特点的小程序名字就显得尤为重要。不管是注册名字还是关键词选取,都要有自己独有的特点,还要比同行抢先一步,否则被抢用了就相当于把好位置拱手相让,目送红利落入他人口袋。

    对于微信小程序名字的选择实际上就有着巨大的作用,那么该如何选取小程序的名字呢?关键词又该如何选取?这个得从微信官方的规则中去提炼,下面就跟蓝色风暴小编一起来理清小程序的命名逻辑。

    对于选择名字,我们首先就需要了解小程序命名规则:

    1、小程序名称可以由中文、数字、英文、符号组成。长度在4-30个字符之间,一个中文字是2个字符。

    2、小程序名称不得与公众平台已有的订阅号、服务号重复,如提示重名,需更换名称进行设置。

    对于微信小程序名称的影响,小程序关键词搜索优先级为:名字命中的关键字;简介命中的关键字;推广关键字。另外搜索的排名规则和权重占比如下:

    1、小程序上线时间:越早上线,优势越大,曝光次数越多(5%)

    2、推广关键词中完全匹配出现关键词次数越多,排名越靠前(10%)

    3、名字中关键词出现一次情况下,且整体名字的字数越短,排名越靠前(35%)

    4、微信小程序用户使用数量越多,排名越靠前(50%)

    对于一些商家需要进行小程序改名,那么方法如下:

    修改路径:登录[微信公众平台小程序]—[设置]—[基本信息]—[小程序名称]—[修改] 。通过管理员扫码验证后即可进入修改页面,当修改名称命中保护词的时候,需要进一步审核通过方可修改成功,名称修改成功后,原名称会立即释放。

    各个行业在进行小程序命名小技巧上也有着以下几点需要注意:

    一、时间上宜早不宜迟:小程序的上线时间占排名整体的5%。比起后来入驻小程序市场的同类企业而言,更早期入驻市场能拥有更多用户群体,所以在排名上自然就更前。

    二、名字的选择:要紧密结合大众的搜索习惯和规律,尽可能选择短词、热词。可通过「微信指数」来排查词语热度是否足够。

    三、关键词的选择:从关键词本身来说,有品牌词、竞品词、产品词、人群词等,无论选择哪种,都要一方面紧密结合小程序本身的行业特点,另一方面考虑用户搜索习惯。

    四、关键词不用的情况:如果你的小程序名字里没包含目标关键词,但排名前5名中的小程序都包含相关字眼,则应该放弃该目标关键词。

    微信小程序名字的作用在后期将体现的越来越重,或许早期只是让消费者对其有一个新印象,对于后期,则带来的是巨大的流量,而流量代表的就是巨大的盈利机会,所以商家尽早确定小程序名称就成为了必须。返回搜狐,查看更多

    责任编辑:

    展开全文
  • 【C/C++】用当前系统时间作为文件名创建文件

    千次阅读 多人点赞 2019-02-28 16:53:48
    只要将获取的系统时间存入字符数组,就可以作为文件名创建文件了。 关于获取系统时间的各种方法,详见我的另一篇文章C/C++ 获取当前系统时间(time_t和tm)清晰梳理 下面给出几种常用方法的代码: 【注意】文件名中...
  • 需求描述:写shell脚本的过程中,有时会需要获取脚本的名字,比如,有的时候,脚本中会有usage()这种函数,可能就会用到脚本的名字。实现方法:shell脚本中,通过使用$0就可以获取到脚本的名字或者说脚本本身。操作...
  • Linux详细查看进程启动时间

    千次阅读 2021-05-13 19:09:11
    Linux系统下查看进程启动时间和运行时间的命令ps -o lstart -p PID #根据PID来查询ps -o lstart,etime -p PID #根据PID来查询,打印出启动时间和已经运行的时间ps -eO lstart | grep PROCESS #根据进程名字查询提示:1...
  • 将MYSQL数据库里的时间戳转换成时间

    千次阅读 2021-01-18 21:56:56
    匿名用户1级2015-04-02 回答from_unixtime()是MySQL里的时间函数select uid,userid,username,email,FROM_UNIXTIME(addtime,'%Y年%m月%d') from members以上例子是sql语句的例子,直接能将mysql的时间戳类型转换成...
  • VBA以当前系统时间(年、月、日、时、分、秒)命名文件夹 ... '获取系统当前时间并格式化,nowTime 就是自己想要的文件夹的名字,长这样:20191121173628 nowTime = Format(Now, "yyyy" & "mm" & "dd" ...
  • Linux 根据名字搜索文件 find命令

    千次阅读 2021-01-24 14:27:49
    我想搜索/root/soft/ 目录下的 名字叫 capacity-scheduler.xm 文件, 我可以这么写 sudo find /root/soft/ -name *capacity-scheduler.xm* 如果我想从根目录搜索,就直接 sudo find / -name *capacity-scheduler.xm* ...
  • C语言中如何获取时间

    千次阅读 2019-04-02 19:41:39
    C语言的时间函数,使用这些函数时要加入头文件time.h 函数 说明 ...char *asctime(const struct tm *tm) ...将时间日期以字符串格式表示,加了缓冲器存放返回值 char *ctime(const time_t *timep)...
  • session失效时间

    千次阅读 2018-05-08 07:02:25
    如果把 session的失效时间设为 20分钟 这个20分钟是指 从用户登陆开始创建一个 session 不管用户操作没操作20分钟一过就失效? 还是说 在用户停止操作20分钟以上才会失效呢?设置session失效时间的三种方法session-...
  • 一.获取当前时间 在JavaScript中,有一个内置对象Date(),其中包含了众多方法来... 返回四位数字表示的年份 getMonth() 返回月份 (0 ~ 11) getDate() 返回一个月中的某一天 (1 ~ 31) getDay() ...
  • sql语句时间排序 sql语句按照时间排序以下文字资料是...SQL按时间排序select * from MyTable Order By ModifyTime Desc按修改的时间倒序排列如果是知道最后一次是某天,加上条件select * from MyTable Where DateDif...
  • 如何修改vs的文件夹名字,不报错,如何修改项目名 tips:若直接修改的话,点击sln进入项目中,vs会表示找不到文件 1.右键选择“记事本”或者“notepad”打开sln 2.修改这一行即可,改后文件夹名字就会自动改变 3....
  • UDS之时间参数总结篇

    千次阅读 多人点赞 2021-04-26 23:02:18
    前言 UDS: (Unified Diagnostic Service) 统一诊断服务协议。 之所以称为统一诊断服务,则是因为该协议是建立在各种传输方式之上的...这些时间参数名字大同小异, 到底有啥区别呢? 这些时间参数到底应该如何正确
  • Mysql时间格式转换

    千次阅读 2021-01-19 11:56:49
    对于每个类型拥有的值范围以及并且指定日期何时间值的有效格式的描述见7.3.6 日期和时间类型。这里是一个使用日期函数的例子。下面的查询选择了所有记录,其date_col的值是在最后30天以内:mysql> SELECT ...
  • linux查看进程启动时间

    千次阅读 2022-06-07 10:20:14
    查看进程启动时间 linux,Linux详细查看进程启动时间
  • 使用EXECL转换时间戳的公式为:代码:=(xxxxxxxxxx+8*3600)/86400+70*365+19使用MYSQL语句解释时间戳语法举例:代码:SELECT FROM_UNIXTIME(1234567890,'%Y-%m-%d %H:%i:%S')附:在mysql中,一个时间字段的存储类型是...
  • MySQL中from_unixtime()时间转换

    千次阅读 2021-01-18 19:49:15
    在mysql中from_unixtime()函数是可以对日期时间进行格式化的,下面小编来给各位同学介绍一下MySQL中from_unixtime()用法吧,希望对各位同学会有所...语法:FROM_UNIXTIME(unix_timestamp,format)返回表示 Unix 时...
  • IDEA创建文件设置注释作者和时间

    千次阅读 2019-07-26 11:52:07
    IDEA创建文件时,添加头部注释来表明作者、创建时间和功能等,如下图 方法 点击File--settings,找到Editor--File and Code Templates--Includes--File Header 可以修改作者为 ${USER} 也可以直接修改固定...
  • 树的存储结构一、双亲表示法 一、双亲表示法 实现:定义数组结构存放树的结点,每个结点含两个域: 数据域:存放结点本身数据信息。 双亲域:指示本结点的双亲结点在数组中的位置。 结点结构表示为: ...
  • 1 实现思路 shell脚本限制命令执行时间1 实现思路2 Shell 脚本中的0,0,0,n,∗,*,∗,#,$,,,?,−,-,−,@值是什么?3 shell脚本 实现 在Shell开发中会存在脚本执行出现超时的现象,需要...0表示没有错误,执行失败时返
  • 【操作系统 - 2】时间片轮转RR进程调度算法

    万次阅读 多人点赞 2017-03-17 23:56:31
    【操作系统 - 2】时间片轮转RR进程调度算法。学习至此,发现很多学了但很久没用的知识,久而久之,慢慢遗忘。等哪天还需要的话,却发现已经忘得差不多了,即使整理了文档(word等),还是得从头再学一遍。读研第一...
  • 自从召集2020届校招同行加入新建立的“IC/FPGA校招笔试面试交流群“,见识到了很多关于建立时间和保持时间分析的题目,在为别人解答疑惑,以及别人为自己解答疑惑的同时,自己对于知识的理解更加深刻了。 对于建立...
  • 常见的标点符号大全及名字

    千次阅读 2021-01-29 05:55:06
    常见的标点符号大全及名字2019-10-10 13:29:37文/颜雨标点符号是辅助文字记录语言的符号,是书面语的组成部分,用来表示停顿、语气以及词语的性质和作用。接下来给大家分享常见的标点符号名字及用法。标点符号大全及...
  • 适合程序员的英文名字

    万次阅读 2018-02-25 07:05:07
    大家都知道 ,不管是在互联网行业,就算是在其它行业都有很大可能需要为自己起一个英文名字,而取名字的时候常常让我们很为难,应该怎样为自己取一个好的英文名呢,最近笔者看到了一篇外国人为他们的孩子取名字的...
  • elvis presley是这个名字代表人物。人们将elvis描绘为英俊大方,唱蓝调的南方摇滚巨星 evan(威尔斯)"年轻的战士",john的威尔斯型式。人们形容evan是文质彬彬的年轻人有著男孩般俊俏面容,聪明的能够完成医学院...
  • pandas 之时间排序

    千次阅读 2020-03-15 12:15:59
    时间排序 在pandas中,有一个非常常用的函数 date_range,尤其是在处理时间序列数据时,这个函数的作用就是产生一个 DatetimeIndex,就是时间序列数据的索引。 pandas.date_range(start=None,end...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 779,639
精华内容 311,855
关键字:

代表时间的名字