0
votes

Réglage de la plage de temps dans le développeur SQL

Je travaille sur un jeu de données contenant des accidents de la voiture et de leur temps d'occurrence. (Le jeu de données existe dans SQL Server sous le nom Accident Strong>).

J'ai une colonne qui est dans la date date code>. Je voudrais extraire le temps de la colonne. Ajoutez ensuite une nouvelle colonne appelée Lighting_period Code> Étiquetez l'heure en tant que Daytime forte> ou Nighttime forte>. Mon problème est avec la définition d'une plage pour les temps, car je reçois la mauvaise étiquette chaque fois que j'exécute le code. P>

Différentes périodes d'éclairage (jour: 6h00 - 17h59 et nuit de 18h à 17h59). P> blockQuote>

[1] D'abord j'ai écrit ce code pour extraire le temps de accident_date_time Code> et stockez-le dans une nouvelle colonne heure p>

time    lightining_label
06:04AM daytime
11:04AM daytime
01:04AM (null)
10:04AM daytime
10:04AM daytime
04:04PM (null)
07:04PM daytime
01:04PM (null)


6 commentaires

to_char? c'est oracle n'est-ce pas?


"J'ai une colonne qui est au format de date. J'aimerais extraire le temps de la colonne" - cela n'a aucun sens, j'ai peur.


On dirait que vous faites un texte en comparaison de texte plutôt que de temps en temps?


La colonne d'origine est au format de date. J'utilise TO_CHAR pour extraire l'heure.


Tocar et Varchar2 ne sont pas SQL Server - corrigez vos tags. L'utilisation des mauvaises ne fera que la recherche d'une solution plus longue et trompeuse. Supprimé SQL Server et ajouté Oracle, mais vous pouvez utiliser quelque chose d'autre


Désolé mon mauvais développeur SQL


3 Réponses :


1
votes

On dirait que la colonne code> code> utilise un type de chaîne ( varchar code>, nvarchar code>) au lieu de heure code> . Donc, vous comparez les valeurs de chaîne au lieu de valeurs de temps.

Vous pouvez utiliser les éléments suivants en utilisant convert code> pour comparer les valeurs de chaîne telles que les valeurs de temps: p>

UPDATE lightiningPeriod
  SET lightining_label = CASE WHEN CONVERT(TIME, [time]) BETWEEN CONVERT(TIME, '06:00AM') AND CONVERT(TIME, '5:59PM') THEN 'daytime' ELSE 'nighttime' END


1 commentaires

J'ai commis une erreur avec le titre. Je travaille sur SQL Developer Not Server.



1
votes

C'est une modifie de la réponse de Sebastian. Dans SQL Server, vous pouvez utiliser une colonne calculée: xxx

puis l'étiquette est calculée lorsque vous interrogez la table, il est donc toujours correct.


2 commentaires

désolé j'ai mis le mauvais titre. J'utilise SQL Developer. Pouvez-vous s'il vous plaît modifier votre réponse pour travailler sur SQL Developer? Merci


@leena. . . Demandez une nouvelle question et étiquetez-la de manière appropriée. Cette question a déjà plusieurs réponses et la modification de la question ou des tags invaliderait les réponses.



0
votes

Merci à tous, j'ai résolu la requête en faisant ceci: xxx


0 commentaires