如何在SQL查询中设置时间格式
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在SQL查询中设置时间格式相关的知识,希望对你有一定的参考价值。
SQL的时间格式是:YYYY-MM-DD HH:NN:SS.sss
其sss是毫秒,由于计算机内部时钟晶振的问题,SQL时间最小单位为3毫秒。
一般SQL时间格式处理:大都采取转换格式至datetime格式
例如显示时常用到的:
1、将2015转换为当年的第一天:
select cast(\'2015\'+\'-1-1\' as datetime)输出结果为:2015-01-01 00:00:00.000
2、将2015-02转换为当年的第一天:
select cast(\'2015-02\'+\'-1\' as datetime)输出结果为:2015-02-01 00:00:00.000
其实以上可以总结为将具有一定格式的字符串转换为日期类型,只要将年月日补全,后面的时间会默认为0时0分0秒0毫秒
参考技术A --请在下面的代码中选择你需要的。--注意,将里面的 GETDATE() 代换成你要转化的日期变量。
--最常用的
Select CONVERT(varchar(100), GETDATE(), 120) -- 2006-05-16 10:57:49
Select CONVERT(varchar(100), GETDATE(), 121) -- 2006-05-16 10:57:49.700
Select CONVERT(varchar(100), GETDATE(), 108 -- 10:57:49
Select CONVERT(varchar(100), GETDATE(), 114 -- 10:57:49:547
--其它日期格式化式样
--日期格式化函数
Select CONVERT(varchar(100), GETDATE(), 0 -- 05 16 2006 10:57AM
Select CONVERT(varchar(100), GETDATE(), 1 -- 05/16/06
Select CONVERT(varchar(100), GETDATE(), 2 -- 06.05.16
Select CONVERT(varchar(100), GETDATE(), 3 -- 16/05/06
Select CONVERT(varchar(100), GETDATE(), 4 -- 16.05.06
Select CONVERT(varchar(100), GETDATE(), 5 -- 16-05-06
Select CONVERT(varchar(100), GETDATE(), 6 -- 16 05 06
Select CONVERT(varchar(100), GETDATE(), 7 -- 05 16, 06
Select CONVERT(varchar(100), GETDATE(), 8 -- 10:57:46
Select CONVERT(varchar(100), GETDATE(), 9 -- 05 16 2006 10:57:46:827AM
Select CONVERT(varchar(100), GETDATE(), 10 -- 05-16-06
Select CONVERT(varchar(100), GETDATE(), 11 -- 06/05/16
Select CONVERT(varchar(100), GETDATE(), 12 -- 060516
Select CONVERT(varchar(100), GETDATE(), 13 -- 16 05 2006 10:57:46:937
Select CONVERT(varchar(100), GETDATE(), 14 -- 10:57:46:967
Select CONVERT(varchar(100), GETDATE(), 20 -- 2006-05-16 10:57:47
Select CONVERT(varchar(100), GETDATE(), 21 -- 2006-05-16 10:57:47.157
Select CONVERT(varchar(100), GETDATE(), 22 -- 05/16/06 10:57:47 AM
Select CONVERT(varchar(100), GETDATE(), 23 -- 2006-05-16
Select CONVERT(varchar(100), GETDATE(), 24 -- 10:57:47
Select CONVERT(varchar(100), GETDATE(), 25 -- 2006-05-16 10:57:47.250
Select CONVERT(varchar(100), GETDATE(), 100 -- 05 16 2006 10:57AM
Select CONVERT(varchar(100), GETDATE(), 101 -- 05/16/2006
Select CONVERT(varchar(100), GETDATE(), 102 -- 2006.05.16
Select CONVERT(varchar(100), GETDATE(), 103 -- 16/05/2006
Select CONVERT(varchar(100), GETDATE(), 104 -- 16.05.2006
Select CONVERT(varchar(100), GETDATE(), 105 -- 16-05-2006
Select CONVERT(varchar(100), GETDATE(), 106 -- 16 05 2006
Select CONVERT(varchar(100), GETDATE(), 107 -- 05 16, 2006
Select CONVERT(varchar(100), GETDATE(), 108 -- 10:57:49
Select CONVERT(varchar(100), GETDATE(), 109 -- 05 16 2006 10:57:49:437AM
Select CONVERT(varchar(100), GETDATE(), 110 -- 05-16-2006
Select CONVERT(varchar(100), GETDATE(), 111 -- 2006/05/16
Select CONVERT(varchar(100), GETDATE(), 112 -- 20060516
Select CONVERT(varchar(100), GETDATE(), 113 -- 16 05 2006 10:57:49:513
Select CONVERT(varchar(100), GETDATE(), 114 -- 10:57:49:547
Select CONVERT(varchar(100), GETDATE(), 120 -- 2006-05-16 10:57:49
Select CONVERT(varchar(100), GETDATE(), 121 -- 2006-05-16 10:57:49.700
Select CONVERT(varchar(100), GETDATE(), 126 -- 2006-05-16T10:57:49.827
Select CONVERT(varchar(100), GETDATE(), 130 -- 18 ???? ?????? 1427 10:57:49:907AM
Select CONVERT(varchar(100), GETDATE(), 131 -- 18/04/1427 10:57:49:920AM 参考技术B 用CONVERT()函数转换
如何在查询中设置 odbc 日期格式
【中文标题】如何在查询中设置 odbc 日期格式【英文标题】:Hoe to set odbc dateformat in query 【发布时间】:2018-01-23 08:38:13 【问题描述】:我已从 Ms Access 数据库获取数据为 PHP JSON 格式。我在查询中有通过日期参数。数据库数据类型是日期/时间。查询 mm/dd/yyyy 中需要日期格式。
我已经给出了结果
ConnectedResource id #4"status":0,"0":[]
print_r($stmt)
给
结果资源 id #4 和 goose else 语句。
<?php
$reg = $_GET['reg'];
$fdate = $_GET['fdate'];
$tdate = $_GET['tdate'];
$yid = $_GET['yid'];
$sql = "select a.RegNo,c.Standard,b.RollNo,d.Division,b.Std_Name as StudentName,AttendanceDate,Attendance_Type,Remark
from (((Attendance_mas as a
inner join Std_Reg as b on a.RegNo = b.RegNo)
inner join StandardMaster as c on a.Standard = c.stdid)
inner join DivisionMaster as d on a.Division =d.DivisionID)
where a.RegNo= $reg and a.AttendanceDate between ($fdate) and
($tdate1) and a.yearid = $yid Order by AttendanceDate desc";
//$sql = "select * from Std_Reg";
$stmt = odbc_exec($conn, $sql);
print_r($stmt);
$result = [];
do
while ($row = odbc_fetch_array($stmt))
$result[] = $row;
while (odbc_next_result($stmt));
if(count($result)>0)
$result1['status']=1;//"Login successfully";
array_push($result1,$result);
else
//$result[]="null";
$result1['status']=0;//"Record not found";
array_push($result1,$result);
odbc_free_result($stmt);
odbc_close($conn); //Close the connection first
echo json_encode($result1); //You will get the encoded array variable
?>
【问题讨论】:
我不明白这个问题,您是否正在寻找一种方法来格式化您的date
或将您的 date
传递给查询?
$fdate 和 $tdate 传入查询其需要的格式 MM/dd/YYYY。
【参考方案1】:
我建议使用PDO PREPARED STATEMENT 将参数绑定到您的查询:
$reg = $_GET['reg'];
$fdate = date("m/d/Y", strtotime($_GET['fdate']));//THis will format the date
$tdate = date("m/d/Y", strtotime($_GET['tdate']));
$yid = $_GET['yid'];
$sql = "select a.RegNo,c.Standard,b.RollNo,d.Division,b.Std_Name as StudentName,AttendanceDate,Attendance_Type,Remark
from (((Attendance_mas as a
inner join Std_Reg as b on a.RegNo = b.RegNo)
inner join StandardMaster as c on a.Standard = c.stdid)
inner join DivisionMaster as d on a.Division =d.DivisionID)
where a.RegNo= ? and a.AttendanceDate between (?) and
(?) and a.yearid = ? Order by AttendanceDate desc";
$res = odbc_prepare($conn, $sql);
if(!$res) die("could not prepare statement ".$sql);
$parameters = array($reg,$fdate,$tdate,$yid);
if(odbc_execute($res, $parameters))
//Fetch the result
else
// handle error
【讨论】:
以上是关于如何在SQL查询中设置时间格式的主要内容,如果未能解决你的问题,请参考以下文章