sql - 如何从 SQL Server 数据库转换此时间格式
问题描述
因此,我们有一个软件供应商将时间存储在 CHAR(216) 字段中的数据库中。在 GUI 中,您可以以 15 分钟为增量选择门的开放时间。因此,在下面的示例中,营业时间为周一至周五上午 8 点至下午 5 点。所以有趣的部分。以下是我在下面的示例中时间位在 SQL 中的存储方式。据我所知,数据是按周日至周六的顺序存储的。有人对我如何将其转换为实际的日期和时间有任何想法吗?
Mon-Fri 8AM-5PM: 00000000000000000000000000000000FFFFFFFF0F00000000000000FFFFFFFF0F00000000000000FFFFFFFF0F00000000000000FFFFFFFF0F00000000000000FFFFFFFF0F000000000000000000000000000000000000000000000000000000000000000000000000000000
All Closed: 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
全部打开:FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
解决方案
计算流i
中每1
一位的索引。i*15
是自一周开始以来的分钟数(周日,00:00?),因此您将该分钟数添加到一周的开始,并获得该开放间隔开始的时间点。
显然,数据是按字节表示的,首先是 LSB。请注意,每个十六进制字符代表 4 位,即正好是一小时。
您可以遍历字符串,一次提取两个十六进制字符,转换为整数,然后找到设置的位,同时i
为每个处理的位增加索引。
伪代码:
byte currentByte;
for ( int bitIndex = 0; bitIndex < (216*4); bitIndex++ ) {
if ( bitIndex % 8 == 0 ) {
/* Need to fetch next byte from the bit-map */
int stringIndex = bitIndex / 4; /* 4 bits make up one character */
String hexByte = substring( input, stringIndex, stringIndex + 2); /* get next two hex characters */
currentByte = parse_hex( hexByte );
}
if ( (currentByte & 1) != 0 ) {
/* Lowest bit is set -> open! */
output( "Open starting at " + (bitIndex * 15) + " minutes from the start of the week.");
} else {
/* Lowest bit not set -> closed! */
}
currentByte = currentByte / 2; /* logical shift right by 1 bit */
}
推荐阅读
- javascript - 防止多种形式的默认操作
- google-apps-script - 跨多个选项卡的工作表过滤脚本在主工作表上显示空白行,并导致其他脚本停止运行
- javascript - event.bind() 不是 discord.js 中的函数
- node.js - 为什么这个节点 setInterval 运行缓慢?
- angular - 如何将json映射到Angular中的接口对象
- python - 从相机到物体计算的opencv距离减少了4“
- python - 我有一个 400 万行的 DataFrame 并尝试将一列值从字符串转换为 JSON 并遇到内存问题。如何改进我的代码?
- flutter - setState() 不会更新 TabBarView 选项卡中的构造函数值
- javascript - CSS/JS 冲突按优先顺序排列
- apache-spark - 从多租户 Kafka 主题处理 Apache Beam 中的乱序事件窗口