博客

  • SQL Date 函数

    SQL 日期

    当我们处理日期时,最难的任务恐怕是确保所插入的日期的格式,与数据库中日期列的格式相匹配。

    只要数据包含的只是日期部分,运行查询就不会出问题。但是,如果涉及时间,情况就有点复杂了。

    在讨论日期查询的复杂性之前,我们先来看看最重要的内建日期处理函数。

    MySQL Date 函数

    下面的表格列出了 MySQL 中最重要的内建日期函数:

    函数 描述
    NOW() 返回当前的日期和时间
    CURDATE() 返回当前的日期
    CURTIME() 返回当前的时间
    DATE() 提取日期或日期/时间表达式的日期部分
    EXTRACT() 返回日期/时间按的单独部分
    DATE_ADD() 给日期添加指定的时间间隔
    DATE_SUB() 从日期减去指定的时间间隔
    DATEDIFF() 返回两个日期之间的天数
    DATE_FORMAT() 用不同的格式显示日期/时间

    SQL Server Date 函数

    下面的表格列出了 SQL Server 中最重要的内建日期函数:

    函数 描述
    GETDATE() 返回当前日期和时间
    DATEPART() 返回日期/时间的单独部分
    DATEADD() 在日期中添加或减去指定的时间间隔
    DATEDIFF() 返回两个日期之间的时间
    CONVERT() 用不同的格式显示日期/时间

    SQL Date 数据类型

    MySQL 使用下列数据类型在数据库中存储日期或日期/时间值:

    • DATE – 格式 YYYY-MM-DD
    • DATETIME – 格式: YYYY-MM-DD HH:MM:SS
    • TIMESTAMP – 格式: YYYY-MM-DD HH:MM:SS
    • YEAR – 格式 YYYY 或 YY

    SQL Server 使用下列数据类型在数据库中存储日期或日期/时间值:

    • DATE – 格式 YYYY-MM-DD
    • DATETIME – 格式: YYYY-MM-DD HH:MM:SS
    • SMALLDATETIME – 格式: YYYY-MM-DD HH:MM:SS
    • TIMESTAMP – 格式: 唯一的数字

    SQL 日期处理

    如果不涉及时间部分,那么我们可以轻松地比较两个日期!

    假设我们有下面这个 "Orders" 表:

    OrderId ProductName OrderDate
    1 computer 2008-12-26
    2 printer 2008-12-26
    3 electrograph 2008-11-12
    4 telephone 2008-10-19

    现在,我们希望从上表中选取 OrderDate 为 "2008-12-26" 的记录。

    我们使用如下 SELECT 语句:

    SELECT * FROM Orders WHERE OrderDate='2008-12-26'

    结果集:

    OrderId ProductName OrderDate
    1 computer 2008-12-26
    3 electrograph 2008-12-26

    现在假设 "Orders" 类似这样(请注意 "OrderDate" 列中的时间部分):

    OrderId ProductName OrderDate
    1 computer 2008-12-26 16:23:55
    2 printer 2008-12-26 10:45:26
    3 electrograph 2008-11-12 14:12:08
    4 telephone 2008-10-19 12:56:10

    如果我们使用上面的 SELECT 语句:

    SELECT * FROM Orders WHERE OrderDate='2008-12-26'

    那么我们得不到结果。这是由于该查询不含有时间部分的日期。

    提示:如果您希望使查询简单且更易维护,那么请不要在日期中使用时间部分!

    本文原创发布W3School ,转载请注明出处,感谢您的尊重!
  • MySQL DATE_SUB() 函数

    定义和用法

    DATE_SUB() 函数从日期减去指定的时间间隔。

    语法

    DATE_SUB(date,INTERVAL expr type)

    date 参数是合法的日期表达式。expr 参数是您希望添加的时间间隔。

    type 参数可以是下列值:

    Type 值
    MICROSECOND
    SECOND
    MINUTE
    HOUR
    DAY
    WEEK
    MONTH
    QUARTER
    YEAR
    SECOND_MICROSECOND
    MINUTE_MICROSECOND
    MINUTE_SECOND
    HOUR_MICROSECOND
    HOUR_SECOND
    HOUR_MINUTE
    DAY_MICROSECOND
    DAY_SECOND
    DAY_MINUTE
    DAY_HOUR
    YEAR_MONTH

    实例

    假设我们有如下的表:

    OrderId ProductName OrderDate
    1 'Computer' 2008-12-29 16:25:46.635

    eg: "OrderDate" 减去 5 天。

    我们使用下面的 SELECT 语句:

    SELECT OrderId,DATE_SUB(OrderDate,INTERVAL 5 DAY) AS OrderPayDate FROM Orders

    结果:

    OrderId OrderPayDate
    1 2008-12-24 16:25:46.635
    本文原创发布W3School ,转载请注明出处,感谢您的尊重!
  • 抖音超火的罗马时钟

    插件描述:心心念念的HTML+JS版的罗马时钟 原生js实现

    查看演示 立即下载

     

  • php set_time_limit()用法测试详解

    在php中set_time_limit函数是用来限制页面执行时间的,如我想把一个php页面的执行时间定义为5秒就可以set_time_limit(5)了。

    一个php脚本通过crontab每5分钟执行一次,考虑到脚本执行时间会超过5分钟,特意用set_time_limit(290)来控制脚本在290秒退出。某天突然发现后台有多个该脚本的进程在执行,也就是说set_time_limit(290)没有起作用。为了证明,特意使用如下代码测试。

     代码如下  

    set_time_limit(5);

    for ($i = 0; $i < 100; $i++) {
        echo date('Y-m-d H:i:s') . "n";
        sleep(1);
    }

    无论是在web还是CLI下,上述脚本并没有在5秒钟后退出。后来加上ini_set(‘max_execution_time’, 5)测试,结果一样。那是不是说明set_time_limit函数根本就没有用呢?其实不然,在 http://stackoverflow.com/questions/5874950/set-max-execution-time-in-php-cli 这里找到根源所在,其实是上面的写法有问题,例如使用下述代码:

     代码如下  

    set_time_limit(5);

    for (;;) {
    }

    执行后,大概5秒钟就可以看到”Fatal error: Maximum execution time of 5 seconds exceeded in”类似这样的错误提示。说明set_time_limit是起作用的。现在在去看看官方文档(http://www.php.net/manual/en/function.set-time-limit.php)上关于此函数的说明,在Note中写到:

    The set_time_limit() function and the configuration directive max_execution_time only affect the execution time of the script itself. Any time spent on activity that happens outside the execution of the script such as system calls using system(), stream operations, database queries, etc. is not included when determining the maximum time that the script has been running. This is not true on Windows where the measured time is real.

     代码如下  
    <?php 
    //set_time_limit(0); 
    $i=1500; 
    include ("inc/conn.php"); 
    while($i>0) 

    $sql="INSERT INTO php (php) 
    VALUES ('$i')"; 
    if ($conn->execute($sql)===flase) 

    //echo "数据插入错误".$conn->errormsg(); 

    else 

    $phpid=$conn->Insert_ID(); 
    echo $i."已经存入数据库,编号:".$phpid; 

    $i–; 
    echo "<hr>"; 

    ?>

    注意:sleep函数暂停的时间也是不计入脚本的执行时间的。所以也是第一个测试失败的原因。

    当你的页面有大量数据时,建议使用set_time_limit()来控制运行时间,默认是30s,所以需要你将执行时间加长点,如 set_time_limit(300)  ,其中将秒数设为0 ,表示持续运行!

    如:set_time_limit(0)表示长时间链接运行!

    注意:这个函数的运行需要你关闭安全模式,在php.ini中将safe_mode = Off 安全模式设置为Off,否则将会出现下面错误:

    Warning: set_time_limit() [function.set-time-limit]: Cannot set time limit in safe mode in

    再次注意的是:

    在php.ini可以通过定义max_execution_time来设置PHP页面的最大执行时间,比如下面:

     代码如下  
    set_time_limit(900);

    这个函数指定了当前所在php脚本的最大执行时间,
    虽然设定值是900秒,实际上
    最大执行时间=php.ini里的max_execution_time数值 - 当前脚本已经执行的时间 + 设定值
    假如php.ini里的max_execution_time=30,当前脚本已经执行10秒,则:
    最大执行时间=30-10+900=920秒。

    php中设置set_time_limit不起作用的解决方法:

    set_time_limit用来设置脚本的超时时间,用法如下:

    set_time_limit(秒数); 
    规定从该句运行时起程序必须在指定秒数内运行结束, 
    超时则程序出错退出. 
    但是有时候设置set_time_limit没有效果,set_time_limit函数最好是在linux下执行,windows执行可能也无效 
    解决方法: 
    修改php.ini里的max_execution_time = 30了。这个默认是30秒,修改为max_execution_time = 300.重新启动apache服务器。这样超时设置为300秒就有提示信息了.

  • PHP time() 函数

    PHP time() 函数

    实例

    返回当前时间的 Unix 时间戳,并格式化为日期:

    <?php
    $t=time();
    echo($t . "<br>");
    echo(date("Y-m-d",$t));
    ?>
    

    运行结果:

    1559145072
    2019-05-29

    定义和用法

    time() 函数返回自 Unix 纪元(January 1 1970 00:00:00 GMT)起的当前时间的秒数。

  • 密码保护:OneinStack 管理FTP账号

    此内容受密码保护。如需查阅,请在下方输入密码。

  • 密码保护:OneinStack MySQL数据库管理

    此内容受密码保护。如需查阅,请在下方输入密码。

  • 密码保护:OneinStack管理虚拟主机

    此内容受密码保护。如需查阅,请在下方输入密码。

  • Qt中 QString 和int, char等的“相互”转换

    Qt中 int ,float ,double转换为QString

    有两种方法

    1.使用

    QString::number();

    如:

    long a = 63;  
    QString s = QString::number(a, 10);             // s == "63"  
    QString t = QString::number(a, 16).toUpper();     // t == "3F"  
    (解释,变量a为int型或者float,double。10和16为进制) toUpper是大写
    2.使用

    long a = 63;  
    QString s = QString("%1").arg(a);  
    这个嘛,我不常用
    把QString转换为 double类型

    方法1.

    QString str="123.45";  
    double val=str.toDouble(); //val=123.45  
    方法2.很适合科学计数法形式转换

    bool ok;  
    double d;  
    d=QString("1234.56e-02").toDouble(&ok); //ok=true;d;12.3456.  
     

    把QString转换为float形

    1.

    QString str="123.45";  
    float d=str.toFloat(); //d=123.45  
    2.

    QString str="R2D2";  
    bool ok;  
    float d=str.toFloat(&ok); //转换是被时返回0.0,ok=false;  
    把QString形转换为整形

    1.转换为十进制整形

    注意:基数默认为10。当基数为10时,并且基数必须在2到36之

    间。如果基数为0,若字符串是以0x开头的就会转换为16进制,若以0开头就转换为八进制,否则就转换为十进制。

    Qstring str="FF";  
    bool ok;  
    int dec=str.toInt(&ok,10); //dec=255 ; ok=rue  
    int hex =str.toInt(&ok,16); //hex=255;ok=true;  
    3.常整形转换为Qstring形

    long a =63;  
    QString str=QString::number(a,16); //str="3f";  
    QString str=QString::number(a,16).toUpper(); //str="3F";  
    Qstring 转换char*问题!

    方法一:

    QString qstr("hello,word");  
    const char * p = qstr.toLocal8Bit().data();  
    方法二:

    const char *p = qstr.toStdString().data();  
    转换过来的是常量
    把当前时间转化为QString…

    public QDateTime qdate = QDateTime.currentDateTime();

    datetime = qdate.toString("yyyy年MM月dd日ddddhh:mm:ss");

    如果不是QTime和QDate类比如说:

    通过TCP/IP接收到的char unsigned char 类等如何转换为QString类QString 

    Time2String( DWORD dwTime){char cTime[50] ={0};

    memset(cTime,0,50);

    strftime(cTime,32,"%Y-%m-%d %H:%M:%S",localtime(&time_t(dwTime)));

    return QString(cTime);}

  • QTreeWidget的使用方法及设置列表项不可选和编辑

    使用到QTreeWidget做总结,以便下次使用。

    QTreeWidget CalibrationWidget = new QTreeWidget;
    CalibrationWidget->setColumnCount(2); //将treewidget设置为两列
    CalibrationWidget->setColumnWidth(0, 155); //设置指定列宽
    CalibrationWidget->setItemsExpandable(true); //设置默认为展开
    QStringList m_header;
    m_header<<QString("名称")<setHeaderLabels(m_header); //设置标题头
    QStringList dynamic;
    dynamic<<QString("动态测试");
    dynamicItem = new QTreeWidgetItem(CalibrationWidget, dynamic); //添加列表项
    1、删除所有子列表项

    QList QTreeWidgetItem::takeChildren() //删除所有子列表项

     Removes the list of children and returns it, otherwise returns an empty list.
    2、删除指定子列表项

    void QTreeWidgetItem::removeChild(QTreeWidgetItem * child) //删除指定子列表项 
    Removes the given item indicated by child. The removed item will not be deleted.
    3、删除指定索引的子列表项

    QTreeWidgetItem * QTreeWidgetItem::takeChild(int index) //删除指定索引的子列表项
     Removes the item at index and returns it, otherwise return 0.
    4、添加子列表项

    void QTreeWidgetItem::addChild(QTreeWidgetItem * child) //添加子列表项 
    Appends the child item to the list of children.
    5、添加多条子列表项

    void QTreeWidgetItem::addChildren(const QList & children) //添加多条子列表项 
    Appends the given list of children to the item.
    6、设置treewidget字体样式及treewidget头字体样式

    QTreeWidget->setFont(QFont("微软雅黑", 12, QFont::Normal, false));
    QTreeWidget->headerItem()->setFont(0, QFont("微软雅黑", 12, QFont::Normal, false));//设置treewidget头字体格式
    ———————
    作者:WANGZHEN`
    来源:CSDN
    原文:https://blog.csdn.net/qq_16093323/article/details/79227251
    版权声明:本文为博主原创文章,转载请附上博文链接!